siked 2 vuotta sitten
vanhempi
commit
7c9e308a95

BIN
ColdVerify_server


+ 13 - 10
ColdVerify_server.go

@@ -23,25 +23,28 @@ func init() {
 
 }
 
-
 func main() {
 
 	HTTPPort, _ := beego.AppConfig.String("HTTPPort")
 	HTTPPort_int, _ := strconv.Atoi(HTTPPort)
 
 	beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
-		AllowAllOrigins:  true,
-		AllowMethods:     []string{"*"},
-		AllowHeaders:     []string{"Origin", "Authorization", "Access-Control-Allow-Origin"},
-		ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-Origin"},
+		// 允许访问所有源
+		AllowAllOrigins: true,
+		// 可选参数"GET", "POST", "PUT", "DELETE", "OPTIONS" (*为所有)
+		AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
+		// 指的是允许的Header的种类
+		AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
+		// 公开的HTTP标头列表
+		ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
+		// 如果设置,则允许共享身份验证凭据,例如cookie
 		AllowCredentials: true,
 	}))
 
-
-	beego.BConfig.AppName = conf.AppName          // 项目名
-	beego.BConfig.ServerName = conf.AppName + conf.HTTPPort      //server  名称
-	beego.BConfig.RunMode = "dev"                //  应用的运行模式
-	beego.BConfig.Listen.HTTPPort = HTTPPort_int //监听端口  本地:8518  线上:8528
+	beego.BConfig.AppName = conf.AppName                    // 项目名
+	beego.BConfig.ServerName = conf.AppName + conf.HTTPPort //server  名称
+	beego.BConfig.RunMode = "dev"                           //  应用的运行模式
+	beego.BConfig.Listen.HTTPPort = HTTPPort_int            //监听端口  本地:8518  线上:8528
 
 	beego.Run()
 

+ 25 - 36
controllers/Device.go

@@ -8,15 +8,15 @@ import (
 	beego "github.com/beego/beego/v2/server/web"
 	"math"
 )
+
 type DeviceController struct {
 	beego.Controller
 }
 
-
 // 列表 -
 func (c *DeviceController) List() {
 	// 验证登录 User_is, User_r
-	_,User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	_, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !User_is {
 		c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
 		c.ServeJSON()
@@ -53,7 +53,7 @@ func (c *DeviceController) List() {
 // 添加-
 func (c *DeviceController) Add() {
 	// 验证登录 User_is, User_r
-	user_r,User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !User_is {
 		c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
 		c.ServeJSON()
@@ -64,34 +64,33 @@ func (c *DeviceController) Add() {
 	T_MSISDN := c.GetString("T_MSISDN")
 
 	var_ := Device.Device{
-		T_sn:  T_sn,
+		T_sn:     T_sn,
 		T_MSISDN: T_MSISDN,
-		T_State: 1,
+		T_State:  1,
 	}
 
-
-	if _, is := Device.Read_Device(T_sn);is{
+	if _, is := Device.Read_Device(T_sn); is {
 		c.Data["json"] = lib.JSONS{Code: 201, Msg: "重复添加!"}
 		c.ServeJSON()
 		return
 	}
 
-
 	Id, is := Device.Add_Device(var_)
 	if !is {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"}
 		c.ServeJSON()
 		return
 	}
-	System.Add_UserLogs_T(user_r.T_uuid,"设备管理", "添加", var_)
-	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!",Data: Id}
+	System.Add_UserLogs_T(user_r.T_uuid, "设备管理", "添加", var_)
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id}
 	c.ServeJSON()
 	return
 }
+
 // 修改-
 func (c *DeviceController) Up() {
 	// 验证登录 User_is, User_r
-	user_r,User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !User_is {
 		c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
 		c.ServeJSON()
@@ -101,7 +100,6 @@ func (c *DeviceController) Up() {
 	T_sn := c.GetString("T_sn")
 	T_MSISDN := c.GetString("T_MSISDN")
 
-
 	Id, err := c.GetInt("Id")
 	if err != nil {
 		c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
@@ -109,31 +107,31 @@ func (c *DeviceController) Up() {
 		return
 	}
 
-	r, is := Device.Read_Device_ById(Id);
+	r, is := Device.Read_Device_ById(Id)
 	if !is {
 		c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
 		c.ServeJSON()
 		return
 	}
 
-
 	r.T_sn = T_sn
 	r.T_MSISDN = T_MSISDN
 	// .......
-	if !Device.Update_Device(r,"T_sn","T_MSISDN") {
+	if !Device.Update_Device(r, "T_sn", "T_MSISDN") {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
 		c.ServeJSON()
 		return
 	}
-	System.Add_UserLogs_T(user_r.T_uuid,"设备管理", "修改", r)
+	System.Add_UserLogs_T(user_r.T_uuid, "设备管理", "修改", r)
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
 	return
 }
+
 // 删除-
 func (c *DeviceController) Del() {
 	// 验证登录 User_is, User_r
-	user_r,User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !User_is {
 		c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
 		c.ServeJSON()
@@ -153,7 +151,7 @@ func (c *DeviceController) Del() {
 			c.ServeJSON()
 			return
 		}
-		System.Add_UserLogs_T(user_r.T_uuid,"设备管理", "删除", r)
+		System.Add_UserLogs_T(user_r.T_uuid, "设备管理", "删除", r)
 	}
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
@@ -161,12 +159,10 @@ func (c *DeviceController) Del() {
 	return
 }
 
-
-
 // 列表 - 分类设备
 func (c *DeviceController) Device_Class() {
 	// 验证登录 User_is, User_r
-	User_r,User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	User_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !User_is {
 		c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
 		c.ServeJSON()
@@ -183,10 +179,10 @@ func (c *DeviceController) Device_Class() {
 		page_z = conf.Page_size
 	}
 
-	T_class,_ := c.GetInt("T_class")
+	T_class, _ := c.GetInt("T_class")
 	T_sn := c.GetString("T_sn")
 
-	r, is := Device.Read_DeviceClass_ById(T_class);
+	r, is := Device.Read_DeviceClass_ById(T_class)
 	if !is {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class 错误!"}
 		c.ServeJSON()
@@ -199,13 +195,12 @@ func (c *DeviceController) Device_Class() {
 		return
 	}
 
-
 	var cnt int64
-	DeviceList, cnt := Device.Read_DeviceClassList_List(T_class,T_sn, page, page_z)
+	DeviceList, cnt := Device.Read_DeviceClassList_List(T_class, T_sn, page, page_z)
 
-	for _,v := range DeviceList{
-		Device_r,_ := Device.Read_Device(v.T_sn)
-		Device_r.T_note_file_num = Device.Read_DeviceSensorData_List_z(v.T_sn,r.CreateTime.Format("2006-01-02 15:04:05"))
+	for _, v := range DeviceList {
+		Device_r, _ := Device.Read_Device(v.T_sn)
+		Device_r.T_note_file_num = Device.Read_DeviceSensorData_List_z(v.T_sn, r.CreateTime.Format("2006-01-02 15:04:05"))
 		r_jsons.List = append(r_jsons.List, Device_r)
 	}
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
@@ -219,18 +214,16 @@ func (c *DeviceController) Device_Class() {
 	return
 }
 
-
 // 列表 - 分类设备
 func (c *DeviceController) Device_Data() {
 	// 验证登录 User_is, User_r
-	_,User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	_, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !User_is {
 		c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
 		c.ServeJSON()
 		return
 	}
 
-
 	type R_JSONS_s struct {
 		//必须的大写开头
 		List      []Device.DeviceData_
@@ -250,15 +243,12 @@ func (c *DeviceController) Device_Data() {
 		page_z = conf.Page_size
 	}
 
-
 	T_sn := c.GetString("T_sn")
 	Time_start := c.GetString("Time_start")
 	Time_and := c.GetString("Time_end")
 
-
-
 	var cnt int
-	r_jsons.List, cnt = Device.Read_DeviceSensorData_List(T_sn,Time_start,Time_and, page, page_z)
+	r_jsons.List, cnt = Device.Read_DeviceSensorData_List(T_sn, Time_start, Time_and, page, page_z)
 
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
 	r_jsons.Page = page
@@ -270,4 +260,3 @@ func (c *DeviceController) Device_Data() {
 	c.ServeJSON()
 	return
 }
-

+ 115 - 11
controllers/TaskData.go

@@ -200,6 +200,55 @@ func (c *TaskDataController) TaskDataClass_List() {
 }
 
 // 添加-
+func (c *TaskDataController) TaskData_AddS() {
+	// 验证登录 User_is, User_r
+	user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+	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
+	}
+
+	//T_sn|T_id|T_t|T_rh|T_time?
+
+	T_Data := c.GetString("T_Data")
+	if len(T_Data) < 5 {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "err T_Data!"}
+		c.ServeJSON()
+		return
+	}
+
+	T_Data_list := strings.Split(T_Data, "?")
+	println(len(T_Data_list), "len(T_Data_list)")
+	var T_Data_list_x = 0
+	for _, v := range T_Data_list {
+		// 2022-08-09 14:25:00|27.7|55.2
+		if len(v) < 5 {
+			println(v, "len(v) < 5")
+			continue
+		}
+		v_list := strings.Split(v, "|")
+		is = Task.Add_TaskData(Task_r.T_task_id, v_list[0], v_list[1], v_list[2], v_list[3], v_list[4])
+		if is {
+			T_Data_list_x += 1
+		}
+	}
+
+	System.Add_UserLogs(user_r.T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"结果:"+string(len(T_Data_list))+"/"+string(T_Data_list_x)+"|=> "+T_Data)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: strconv.Itoa(T_Data_list_x)}
+	c.ServeJSON()
+	return
+}
+
+// 添加-
 func (c *TaskDataController) TaskData_Add() {
 	// 验证登录 User_is, User_r
 	user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
@@ -327,6 +376,44 @@ func (c *TaskDataController) TaskData_Del() {
 	return
 }
 
+// 删除-
+func (c *TaskDataController) TaskData_Del_t_id() {
+	// 验证登录 User_is, User_r
+	user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+
+	Id, err := c.GetInt("Id")
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
+		c.ServeJSON()
+		return
+	}
+
+	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
+	}
+
+	is = Task.Del_TaskData_t_id(Task_r.T_task_id, strconv.Itoa(Id))
+	if !is {
+		c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"}
+		c.ServeJSON()
+		return
+	}
+	System.Add_UserLogs(user_r.T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+	c.ServeJSON()
+	return
+}
+
 // 列表 - 接口
 func (c *TaskDataController) Export_Data_Excel() {
 	// 验证登录 User_is, User_r
@@ -593,14 +680,16 @@ func (c *TaskDataController) Check() {
 		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 错误
-		Result_str      string //  提示内容
+		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
 
@@ -624,24 +713,39 @@ func (c *TaskDataController) Check() {
 			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 {
-						continue
+						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_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 = 201
+			r_json.Result = 202
 			r_json.Result_str = "数据量太少 必须大于 2条以上!"
 		}
 

BIN
logs/Mqtt/Mqtt.log.baiduyun.uploading.cfg


+ 9 - 10
models/Device/DeviceClassList.go

@@ -19,9 +19,9 @@ import (
 type DeviceClassList struct {
 	Id int `orm:"column(ID);size(11);auto;pk"`
 
-	T_class      int    `orm:"size(200);null"`  // 分类
-	T_id      int `orm:"size(20);null"` // 设备id
-	T_sn      string `orm:"size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+	T_class int    `orm:"size(200);null"` // 分类
+	T_id    int    `orm:"size(20);null"`  // 设备id
+	T_sn    string `orm:"size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
 
 	T_State    int       `orm:"size(2);1"`                                             // 0 删除   1 正常
 	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
@@ -119,11 +119,11 @@ func Read_DeviceClassList(T_sn string) (r DeviceClassList, is bool) {
 // 添加
 func Add_DeviceClassList(r DeviceClassList) (id int64, is bool) {
 	o := orm.NewOrm()
-
-	err := o.Read(&r,"T_class","T_sn") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
+	r.T_State = 1
+	err := o.Read(&r, "T_class", "T_sn", "T_State") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
 	if err == nil {
-		if r.Id > 0{
-			logs.Println("重复添加",r.T_class,r.T_sn)
+		if r.Id > 0 {
+			logs.Println("重复添加", r.T_class, r.T_sn)
 			return 0, false
 		}
 	}
@@ -166,7 +166,7 @@ func Delete_DeviceClassList_(v DeviceClassList) bool {
 }
 
 // 修改
-func Update_DeviceClassList(m DeviceClassList,cols ...string) bool {
+func Update_DeviceClassList(m DeviceClassList, cols ...string) bool {
 	o := orm.NewOrm()
 	if num, err := o.Update(&m, cols...); err == nil {
 		fmt.Println("Number of records updated in database:", num)
@@ -198,7 +198,7 @@ func Read_DeviceClassList_List(T_class int, T_sn string, page int, page_z int) (
 }
 
 // 获取列表
-func Read_DeviceClassList_List_id(T_class_Id int ) (r []DeviceClassList) {
+func Read_DeviceClassList_List_id(T_class_Id int) (r []DeviceClassList) {
 
 	o := orm.NewOrm()
 	// 也可以直接使用 Model 结构体作为表名
@@ -209,4 +209,3 @@ func Read_DeviceClassList_List_id(T_class_Id int ) (r []DeviceClassList) {
 
 	return r
 }
-

+ 63 - 45
models/Task/TaskData.go

@@ -30,6 +30,7 @@ func (t *TaskData) TableName() string {
 func init() {
 
 }
+
 //创建数据库  Device.CREATE_TaskData("")
 func CREATE_TaskData(T_task_id string) bool {
 	o := orm.NewOrm()
@@ -66,7 +67,7 @@ func Truncate_TaskData(T_task_id string) bool {
 
 	o := orm.NewOrm()
 
-	sql := "truncate table Z_TaskData_"+T_task_id
+	sql := "truncate table Z_TaskData_" + T_task_id
 	logs.Println(sql)
 	o.Raw(sql).Exec()
 
@@ -74,15 +75,15 @@ func Truncate_TaskData(T_task_id string) bool {
 }
 
 // 添加
-func Import_TaskData(Sn string,T_id int,T_task_id string,Time_start string, Time_end string) bool {
+func Import_TaskData(Sn string, T_id int, T_task_id string, Time_start string, Time_end string) bool {
 	//if conf.Server_test {
 	//	return true
 	//}
 	o := orm.NewOrm()
 
 	// 开始插入数据
-	sql := "insert into Z_TaskData_"+T_task_id+"(t_id,t_t,t_rh,t_time) select t_id,t_t,t_rh,t_time from Z_DeviceData_"+Sn
-	sql = sql + " WHERE t_time > '"+ Time_start +"' AND t_time < '"+ Time_end +"'"
+	sql := "insert into Z_TaskData_" + T_task_id + "(t_id,t_t,t_rh,t_time) select t_id,t_t,t_rh,t_time from Z_DeviceData_" + Sn
+	sql = sql + " WHERE t_time >= '" + Time_start + "' AND t_time <= '" + Time_end + "'"
 	//  这里有时间优化  用于一次 prepare 多次 exec,以提高批量执行的速度
 	logs.Println(sql)
 	res, err := o.Raw(sql).Exec()
@@ -91,8 +92,9 @@ func Import_TaskData(Sn string,T_id int,T_task_id string,Time_start string, Time
 		return false
 	}
 
-
-	sql = "UPDATE Z_TaskData_"+T_task_id+" SET `t_sn` = '"+Sn+"',`t_id` = "+strconv.Itoa(T_id)+" WHERE `t_sn` IS NULL"
+	// 强行替换  ID
+	sql = "UPDATE Z_TaskData_" + T_task_id + " SET `t_sn` = '" + Sn + "',`t_id` = " + strconv.Itoa(T_id) + " WHERE `t_sn` IS NULL"
+	// 设备 ID
 	//sql = "UPDATE Z_TaskData_"+T_task_id+" SET `t_sn` = '"+Sn+"' WHERE `t_sn` IS NULL"
 	logs.Println(sql)
 	o.Raw(sql).Exec()
@@ -102,19 +104,20 @@ func Import_TaskData(Sn string,T_id int,T_task_id string,Time_start string, Time
 }
 
 type TaskData_ struct {
-	ID    int  `orm:"column(ID);size(100);null"`        // ID
-	T_sn    string  `orm:"column(t_sn);size(256);null"`        // 标题
-	T_id      int     `orm:"column(t_id);size(10);null"`           // ID
-	T_t       float32 `orm:"column(t_t);size(10);null"`            // 温度
-	T_rh      float32 `orm:"column(t_rh);size(10);null"`           // 湿度
-	T_time    string  `orm:"column(t_time);type(timestamp);null;"` // 采集时间
+	ID     int     `orm:"column(ID);size(100);null"`   // ID
+	T_sn   string  `orm:"column(t_sn);size(256);null"` // 标题
+	T_id   int     `orm:"column(t_id);size(10);null"`  // ID
+	T_t    float32 `orm:"column(t_t);size(10);null"`   // 温度
+	T_rh   float32 `orm:"column(t_rh);size(10);null"`  // 湿度
+	T_time string  `orm:"column(t_times);null;"`       // 采集时间
 }
 type TaskDataClass_ struct {
-	T_sn    string  `orm:"column(t_sn);size(256);null"`        // 标题
-	T_id      int     `orm:"column(t_id);size(10);null"`           // ID
+	T_sn string `orm:"column(t_sn);size(256);null"` // 标题
+	T_id int    `orm:"column(t_id);size(10);null"`  // ID
 }
+
 //
-func Read_TaskData_ById_List(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(T_task_id string, SN string, T_id int, Time_start_ string, Time_end_ string, page int, page_z int) ([]TaskData_, int64) {
 	o := orm.NewOrm()
 	var maps []TaskData_
 	var maps_z []orm2.ParamsList
@@ -142,7 +145,7 @@ func Read_TaskData_ById_List(T_task_id string,SN string, T_id int, Time_start_ s
 		sql_condition += " t_id = " + strconv.Itoa(T_id) + " AND "
 	}
 
-	sql_condition += " t_sn LIKE '%"+SN+"%' "
+	sql_condition += " t_sn = '" + SN + "' "
 
 	sql := "SELECT COUNT(ID) FROM Z_TaskData_" + T_task_id + " WHERE " + sql_condition
 	fmt.Println(sql)
@@ -153,8 +156,9 @@ func Read_TaskData_ById_List(T_task_id string,SN string, T_id int, Time_start_ s
 	if len(maps_z) == 0 {
 		return maps, 0
 	}
+
 	//fmt.Println("maps_z;",maps_z[0][0])
-	sql = "SELECT ID,t_sn,t_id,t_t,t_rh,DATE_FORMAT(t_time,'%Y-%c-%d %H:%i:%s') AS t_time  FROM Z_TaskData_" + T_task_id + " WHERE " + sql_condition + " ORDER BY t_time DESC "
+	sql = "SELECT ID,t_sn,t_id,t_t,t_rh,DATE_FORMAT(t_time,'%Y-%c-%d %H:%i:%s') AS t_times,t_time  FROM Z_TaskData_" + T_task_id + " WHERE " + sql_condition + " ORDER BY t_time DESC "
 	if page_z != 9999 {
 		sql = sql + " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(pagez)
 	}
@@ -166,20 +170,19 @@ func Read_TaskData_ById_List(T_task_id string,SN string, T_id int, Time_start_ s
 	key, _ := strconv.Atoi(maps_z[0][0].(string))
 	return maps, int64(key)
 }
+
 //
-func Read_TaskData_ById_List_(T_task_id string,SN string, T_id int) ([]TaskData_) {
+func Read_TaskData_ById_List_(T_task_id string, SN string, T_id int) []TaskData_ {
 	o := orm.NewOrm()
 	var maps []TaskData_
 
-
 	sql_condition := ""
 
 	sql_condition += " t_id = " + strconv.Itoa(T_id) + " AND "
-	sql_condition += " t_sn LIKE '%"+SN+"%' "
+	sql_condition += " t_sn LIKE '%" + SN + "%' "
 
 	//fmt.Println("maps_z;",maps_z[0][0])
-	sql := "SELECT ID,t_sn,t_id,t_t,t_rh,DATE_FORMAT(t_time,'%Y-%c-%d %H:%i') AS t_time  FROM Z_TaskData_" + T_task_id + " WHERE " + sql_condition + " ORDER BY t_time "
-
+	sql := "SELECT ID,t_sn,t_id,t_t,t_rh,DATE_FORMAT(t_time,'%Y-%c-%d %H:%i') AS t_times,t_time  FROM Z_TaskData_" + T_task_id + " WHERE " + sql_condition + " ORDER BY t_time "
 
 	fmt.Println(sql)
 	o.Raw(sql).QueryRows(&maps)
@@ -188,7 +191,7 @@ func Read_TaskData_ById_List_(T_task_id string,SN string, T_id int) ([]TaskData_
 }
 
 //
-func Read_TaskData_ById_ClassList(T_task_id string) ([]TaskDataClass_) {
+func Read_TaskData_ById_ClassList(T_task_id string) []TaskDataClass_ {
 	o := orm.NewOrm()
 	var maps []TaskDataClass_
 
@@ -201,7 +204,6 @@ func Read_TaskData_ById_ClassList(T_task_id string) ([]TaskDataClass_) {
 	return maps
 }
 
-
 // 添加
 func Add_TaskData(T_task_id string, T_sn string, T_id string, T_t string, T_rh string, T_time string) bool {
 
@@ -213,23 +215,23 @@ func Add_TaskData(T_task_id string, T_sn string, T_id string, T_t string, T_rh s
 	//	"VALUES ('" + T_sn + "', " + T_id + ", '" + T_time + "') " +
 	//	"ON DUPLICATE KEY UPDATE t_t=" + T_t + ", t_rh="+ T_rh +";"
 
-	sql := "DELETE FROM Z_TaskData_" + T_task_id + "  WHERE " + " t_id = " + T_id + " AND "+ " t_sn LIKE '%"+T_sn+"%' " + "AND t_time = '" + T_time + "'  "
-
-	//  这里有时间优化  用于一次 prepare 多次 exec,以提高批量执行的速度
-	fmt.Println(sql)
-	res, err := o.Raw(sql).Exec()
-	if err != nil {
-		fmt.Println(err)
-		return false
-	}
-	res.RowsAffected()
-
+	// 去重复数据
+	//sql := "DELETE FROM Z_TaskData_" + T_task_id + "  WHERE " + " t_id = " + T_id + " AND "+ " t_sn = '"+T_sn+"' " + "AND t_time = '" + T_time + "'  "
+	//
+	////  这里有时间优化  用于一次 prepare 多次 exec,以提高批量执行的速度
+	//fmt.Println(sql)
+	//res, err := o.Raw(sql).Exec()
+	//if err != nil {
+	//	fmt.Println(err)
+	//	return false
+	//}
+	//res.RowsAffected()
 
-	sql = "INSERT INTO Z_TaskData_" + T_task_id + " (`t_sn`, `t_id`, `t_t`, `t_rh`, `t_time`) " +
+	sql := "INSERT INTO Z_TaskData_" + T_task_id + " (`t_sn`, `t_id`, `t_t`, `t_rh`, `t_time`) " +
 		"VALUES ('" + T_sn + "', " + T_id + ", " + T_t + "," + T_rh + ", '" + T_time + "')"
 
 	fmt.Println(sql)
-	res, err = o.Raw(sql).Exec()
+	res, err := o.Raw(sql).Exec()
 	if err != nil {
 		fmt.Println(err)
 		return false
@@ -240,24 +242,23 @@ func Add_TaskData(T_task_id string, T_sn string, T_id string, T_t string, T_rh s
 	return true
 }
 
-
 // 修改
 func Up_TaskData(T_task_id string, Id string, T_t string, T_rh string, T_time string) bool {
 
 	o := orm.NewOrm()
 	SET_str := " SET "
-	if len(T_t) > 0{
+	if len(T_t) > 0 {
 		SET_str = SET_str + " t_t = " + T_t + " ,"
 	}
-	if len(T_rh) > 0{
+	if len(T_rh) > 0 {
 		SET_str = SET_str + " t_rh = " + T_rh + " ,"
 	}
-	if len(T_time) > 0{
+	if len(T_time) > 0 {
 		SET_str = SET_str + " t_time = '" + T_time + "' ,"
 	}
 
-	if len(SET_str) > 7{
-		SET_str = SET_str[:(len(SET_str)-1)]
+	if len(SET_str) > 7 {
+		SET_str = SET_str[:(len(SET_str) - 1)]
 	}
 
 	// 开始插入数据 UPDATE `cold_verify`.`Z_TaskData_d8qMyeXLzIxn` SET `t_t` = 20.2 WHERE `ID` = 69
@@ -275,13 +276,11 @@ func Up_TaskData(T_task_id string, Id string, T_t string, T_rh string, T_time st
 	return true
 }
 
-
 // 添加
 func Del_TaskData(T_task_id string, Id string) bool {
 
 	o := orm.NewOrm()
 
-
 	// 开始插入数据 UPDATE `cold_verify`.`Z_TaskData_d8qMyeXLzIxn` SET `t_t` = 20.2 WHERE `ID` = 69
 	sql := "DELETE FROM Z_TaskData_" + T_task_id + " WHERE ID = " + Id
 	//  这里有时间优化  用于一次 prepare 多次 exec,以提高批量执行的速度
@@ -297,3 +296,22 @@ func Del_TaskData(T_task_id string, Id string) bool {
 	return true
 }
 
+// 添加
+func Del_TaskData_t_id(T_task_id string, Id string) bool {
+
+	o := orm.NewOrm()
+
+	// 开始插入数据 UPDATE `cold_verify`.`Z_TaskData_d8qMyeXLzIxn` SET `t_t` = 20.2 WHERE `ID` = 69
+	sql := "DELETE FROM Z_TaskData_" + T_task_id + " WHERE t_id = " + Id
+	//  这里有时间优化  用于一次 prepare 多次 exec,以提高批量执行的速度
+	logs.Println(sql)
+	res, err := o.Raw(sql).Exec()
+	if err != nil {
+		fmt.Println(err)
+		return false
+	}
+	res.RowsAffected()
+
+	//fmt.Println("mysql row affected nums: ", num)
+	return true
+}

+ 13 - 14
routers/Task.go

@@ -7,34 +7,33 @@ import (
 
 func init() {
 
-
 	beego.Router("/UpFileToken", &controllers.UpFileController{}, "*:ConfigUpFileToken") // *全部;  get,post:
 
-
-	beego.Router("/Task/List", &controllers.TaskController{}, "*:List")           //
+	beego.Router("/Task/List", &controllers.TaskController{}, "*:List") //
 
 	beego.Router("/Task/Get", &controllers.TaskController{}, "*:Get") //
 	beego.Router("/Task/Add", &controllers.TaskController{}, "*:Add") //
-	beego.Router("/Task/Up", &controllers.TaskController{}, "*:Up") //
-	beego.Router("/Task/Del", &controllers.TaskController{}, "*:Del")   //
+	beego.Router("/Task/Up", &controllers.TaskController{}, "*:Up")   //
+	beego.Router("/Task/Del", &controllers.TaskController{}, "*:Del") //
 
 	// 提取数据
 	beego.Router("/TaskData/Extract_TaskData", &controllers.TaskDataController{}, "*:Extract_TaskData")
 	beego.Router("/TaskData/TaskDataClass_List", &controllers.TaskDataController{}, "*:TaskDataClass_List")
 	beego.Router("/TaskData/List", &controllers.TaskDataController{}, "*:TaskData_List")
-	beego.Router("/TaskData/Add", &controllers.TaskDataController{}, "*:TaskData_Add") //
-	beego.Router("/TaskData/Up", &controllers.TaskDataController{}, "*:TaskData_Up") //
-	beego.Router("/TaskData/Del", &controllers.TaskDataController{}, "*:TaskData_Del")   //
+	beego.Router("/TaskData/Add", &controllers.TaskDataController{}, "*:TaskData_Add")         //
+	beego.Router("/TaskData/AddS", &controllers.TaskDataController{}, "*:TaskData_AddS")       //
+	beego.Router("/TaskData/Up", &controllers.TaskDataController{}, "*:TaskData_Up")           //
+	beego.Router("/TaskData/Del", &controllers.TaskDataController{}, "*:TaskData_Del")         //
+	beego.Router("/TaskData/DelTid", &controllers.TaskDataController{}, "*:TaskData_Del_t_id") //
 
-	beego.Router("/TaskData/Export_Data_Excel", &controllers.TaskDataController{}, "*:Export_Data_Excel")  // 设置 设备参数
-	beego.Router("/TaskData/Export_Data_PDF", &controllers.TaskDataController{}, "*:Export_Data_PDF")  // 设置 设备参数
+	beego.Router("/TaskData/Export_Data_Excel", &controllers.TaskDataController{}, "*:Export_Data_Excel") // 设置 设备参数
+	beego.Router("/TaskData/Export_Data_PDF", &controllers.TaskDataController{}, "*:Export_Data_PDF")     // 设置 设备参数
 
 	// 校验
-	beego.Router("/TaskData/Check", &controllers.TaskDataController{}, "*:Check")  // 设置 设备参数
-
+	beego.Router("/TaskData/Check", &controllers.TaskDataController{}, "*:Check") // 设置 设备参数
 
 	// 公司用户
-	beego.Router("/UserTask/List", &controllers.TaskController{}, "*:UserTaskList")           //
+	beego.Router("/UserTask/List", &controllers.TaskController{}, "*:UserTaskList") //
 	beego.Router("/UserTaskData/List", &controllers.TaskDataController{}, "*:UserTaskData_List")
 
-}
+}

BIN
static/fonts/MiSans-Medium.ttf


BIN
static/fonts/iconfont.eot


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 44 - 0
static/fonts/iconfont.svg


BIN
static/fonts/iconfont.ttf


BIN
static/fonts/iconfont.woff


BIN
static/fonts/三极行楷简体-粗.ttf


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä