Browse Source

UPDATE:恢复导出pdf、excel排序

zoie 10 months ago
parent
commit
443fdf671a
3 changed files with 61 additions and 16 deletions
  1. 51 14
      controllers/Data.go
  2. 8 0
      models/Device/DeviceData.go
  3. 2 2
      models/Device/DeviceSensor.go

+ 51 - 14
controllers/Data.go

@@ -329,13 +329,24 @@ func (c *DataController) Device_Sensor_Data_Excel() {
 	}
 	var DeviceSensor_data []Device.DeviceData_R
 
-	//DeviceSensor_data, _ = Device.Read_DeviceData_By_T_snid_List(T_snid, Time_start, Time_end, 0, 9999)
-	dsList := Device.Read_DeviceSensorList_By_T_snid(T_snid)
-	for _, v := range dsList {
-		snid := fmt.Sprintf("%s,%d", v.T_sn, v.T_id)
-		data, _ := Device.Read_DeviceData_By_T_snid_List(snid, Time_start, Time_end, 0, 9999)
-		DeviceSensor_data = append(DeviceSensor_data, data...)
-	}
+	DeviceSensor_data, _ = Device.Read_DeviceData_By_T_snid_List(T_snid, Time_start, Time_end, 0, 9999)
+	// 按照传感器T_sort排序
+	//var snids string
+	//dsList := Device.Read_DeviceSensorList_By_T_snid(T_snid)
+	//// 创建名称到权重的映射
+	//orderMap := make(map[int]int)
+	//for i, v := range dsList {
+	//	snids += fmt.Sprintf("%s,%d|", v.T_sn, v.T_id)
+	//	orderMap[v.T_id] = i
+	//}
+	//sort.Slice(DeviceSensor_data, func(i, j int) bool {
+	//	if DeviceSensor_data[i].T_time == DeviceSensor_data[j].T_time {
+	//		// 如果时间相同,则按预设顺序排序
+	//		return orderMap[DeviceSensor_data[i].T_id] < orderMap[DeviceSensor_data[j].T_id]
+	//	}
+	//	return DeviceSensor_data[i].T_time > DeviceSensor_data[j].T_time
+	//})
+
 	f := excelize.NewFile() // 设置单元格的值
 	// 这里设置表头
 	f.SetCellValue("Sheet1", "A1", "编号")
@@ -627,13 +638,24 @@ func (c *DataController) Device_Sensor_Data_PDF() {
 	}
 	var DeviceSensor_data []Device.DeviceData_R
 
-	//DeviceSensor_data, _ = Device.Read_DeviceData_By_T_snid_List(T_snid, Time_start, Time_end, 0, 9999)
-	dsList := Device.Read_DeviceSensorList_By_T_snid(T_snid)
-	for _, v := range dsList {
-		snid := fmt.Sprintf("%s,%d", v.T_sn, v.T_id)
-		data, _ := Device.Read_DeviceData_By_T_snid_List(snid, Time_start, Time_end, 0, 9999)
-		DeviceSensor_data = append(DeviceSensor_data, data...)
-	}
+	DeviceSensor_data, _ = Device.Read_DeviceData_By_T_snid_List(T_snid, Time_start, Time_end, 0, 9999)
+	// 按照传感器T_sort排序
+	//var snids string
+	//dsList := Device.Read_DeviceSensorList_By_T_snid(T_snid)
+	//// 创建名称到权重的映射
+	//orderMap := make(map[int]int)
+	//for i, v := range dsList {
+	//	snids += fmt.Sprintf("%s,%d|", v.T_sn, v.T_id)
+	//	orderMap[v.T_id] = i
+	//}
+	//sort.Slice(DeviceSensor_data, func(i, j int) bool {
+	//	if DeviceSensor_data[i].T_time == DeviceSensor_data[j].T_time {
+	//		// 如果时间相同,则按预设顺序排序
+	//		return orderMap[DeviceSensor_data[i].T_id] < orderMap[DeviceSensor_data[j].T_id]
+	//	}
+	//	return DeviceSensor_data[i].T_time > DeviceSensor_data[j].T_time
+	//})
+
 	var err error
 	pdf := &gopdf.GoPdf{}
 	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) //595.28, 841.89 = A4
@@ -1285,6 +1307,21 @@ func Device_Sensor_Data_ChartShow_PDF0(companyName, T_snid, Time_start, Time_end
 	//DeviceSensor_data, _ = Device.Read_DeviceData_By_T_snid_List(T_snid, Time_start, Time_end, 0, 9999)
 
 	DeviceSensor_data, _ = Device.Read_DeviceData_ByIds(sn, ids, Time_start, Time_end, 0, 9999)
+
+	// 根据传感器T_sort排序
+	//dsList := Device.Read_DeviceSensorList_By_T_snid(T_snid)
+	//// 创建名称到权重的映射
+	//orderMap := make(map[int]int)
+	//for i, v := range dsList {
+	//	orderMap[v.T_id] = i
+	//}
+	//sort.Slice(DeviceSensor_data, func(i, j int) bool {
+	//	if DeviceSensor_data[i].T_time == DeviceSensor_data[j].T_time {
+	//		// 如果时间相同,则按预设顺序排序
+	//		return orderMap[DeviceSensor_data[i].T_id] < orderMap[DeviceSensor_data[j].T_id]
+	//	}
+	//	return DeviceSensor_data[i].T_time > DeviceSensor_data[j].T_time
+	//})
 	// 最高温度、最低温度、最高湿度、最低湿度
 	var maxTemp, minTemp, maxHumidity, minHumidity float32
 	// 最高温度时间、最低温度时间、最高湿度时间、最低湿度时间

+ 8 - 0
models/Device/DeviceData.go

@@ -556,6 +556,14 @@ func Read_DeviceData_By_T_snid_List(T_snid string, Time_start_ string, Time_end_
 		return false
 	})
 
+	//sort.Slice(maps, func(i, j int) bool {
+	//	// 先按 T_time 字段排序,如果 T_time 相同则按 T_id 字段排序
+	//	if maps[i].T_time == maps[j].T_time {
+	//		return maps[i].T_name < maps[j].T_name
+	//	}
+	//	return maps[i].T_time > maps[j].T_time
+	//})
+
 	if page <= 1 {
 		offset = 0
 	} else {

+ 2 - 2
models/Device/DeviceSensor.go

@@ -1004,9 +1004,9 @@ func Read_DeviceSensorManageList(admin_r *Account.Admin, bindSN []string, T_pid
 		sql_WHERE += " AND t_datashow =" + strconv.Itoa(T_datashow)
 	}
 
-	sql_ORDER := " ORDER BY t_sort ASC,ds.t_id"
+	sql_ORDER := " ORDER BY ds.t_sort ASC,ds.t_id"
 	if T_sort == 1 {
-		sql_ORDER = " ORDER BY t_sort DESC,ds.t_id"
+		sql_ORDER = " ORDER BY ds.t_sort DESC,ds.t_id"
 	}
 
 	// -------------