Ver código fonte

2023-07-25 优化报警查询列表

zoie 2 anos atrás
pai
commit
c7dcbd28a2
4 arquivos alterados com 101 adições e 18 exclusões
  1. 36 2
      controllers/User.go
  2. 0 1
      controllers/Warning.go
  3. 23 0
      models/Account/Admin.go
  4. 42 15
      models/Warning/Warning.go

+ 36 - 2
controllers/User.go

@@ -929,18 +929,52 @@ func (c *UserController) Admin_Del() {
 
 // 报警通知的用户列表
 func (c *UserController) User_Notice_List() {
+	T_name := c.GetString("T_name")
+
 	type R_JSONS struct {
 		//必须的大写开头
 		AdminList []Account.Admin_R
 		UserList  []Account.Admin_R
 	}
 
+	var AdminList, UserList []Account.Admin_R
+
 	var r_jsons R_JSONS
 
+	// 操作pid
+	company_r, err := Account.Read_Company_ById(c.T_pid)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
+		c.ServeJSON()
+		return
+	}
+	T_pids := []int{}
+	for _, v := range strings.Split(strings.Trim(company_r.T_path, "/"), "/") {
+		pid, _ := strconv.Atoi(v)
+		T_pids = append(T_pids, pid)
+	}
 	// 绑定公司id的内部用户列表
-	r_jsons.AdminList = Account.Read_Admin_List_T_pids(c.T_pid)
+	AdminList = Account.Read_Admin_List_T_pids(c.T_pid)
 	// 绑定公司id的公司用户列表
-	r_jsons.UserList = Account.Read_Admin_List_T_pid(c.T_pid)
+	//r_jsons.UserList = Account.Read_Admin_List_T_pid(c.T_pid)
+	// 绑定上级公司用户列表
+	UserList = Account.Read_Parent_Admin_List(T_pids)
+
+	if len(T_name) > 0 {
+		for _, v := range AdminList {
+			if strings.Contains(v.T_name, T_name) {
+				r_jsons.AdminList = append(r_jsons.AdminList, v)
+			}
+		}
+		for _, v := range UserList {
+			if strings.Contains(v.T_name, T_name) {
+				r_jsons.UserList = append(r_jsons.UserList, v)
+			}
+		}
+	} else {
+		r_jsons.AdminList = AdminList
+		r_jsons.UserList = UserList
+	}
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
 	c.ServeJSON()

+ 0 - 1
controllers/Warning.go

@@ -87,7 +87,6 @@ func (c *DeviceController) DeviceWarning_List() {
 		// 获取最新
 		r_jsons.Data, r_jsons.Num = Warning.Read_Warning_List(c.T_pid, tpList, T_name, T_handle, Time_start, Time_end, page, page_z)
 	}
-
 	r_jsons.Page = page
 	r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
 

+ 23 - 0
models/Account/Admin.go

@@ -371,6 +371,29 @@ func Read_Admin_List_T_pid(T_pid int) (AdminList []Admin_R) {
 
 	return AdminList
 }
+func Read_Parent_Admin_List(T_pid []int) (AdminList []Admin_R) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(Admin))
+	var maps []Admin
+	cond := orm.NewCondition()
+
+	cond1 := cond.And("T_State", 1).And("T_pid__in", T_pid)
+
+	_, err := qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&maps)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return AdminList
+	}
+
+	for _, v := range maps {
+		AdminList = append(AdminList, AdminToAdmin_R(v))
+	}
+
+	return AdminList
+}
 
 func Read_Admin_Num_ByT_power(T_power int) int {
 

+ 42 - 15
models/Warning/Warning.go

@@ -17,15 +17,15 @@ import (
 // 模板
 type Warning struct {
 	Id        int64     `orm:"column(ID);size(11);auto;pk"`
-	T_pid     int       `orm:"index;size(256);null"`        // Account.Company 绑定公司
-	T_tp      int       `orm:"index;size(200);null"`        // 报警类型   ->WarningList
-	T_sn      string    `orm:"index;size(256);null"`        // 设备序列号
-	T_D_name  string    `orm:"size(256);null"`              // 设备名称
-	T_id      int       `orm:"index;size(200);null"`        // 传感器 ID
-	T_DS_name string    `orm:"size(256);null"`              // 传感器名称
-	T_Remark  string    `orm:"type(text);null"`             // 采集内容
-	T_Ut      time.Time `orm:"index;type(timestamp);null;"` // 采集时间
-	T_fUt     time.Time `orm:"type(timestamp);null;"`       // 首次采集时间
+	T_pid     int       `orm:"size(256);null"`        // Account.Company 绑定公司
+	T_tp      int       `orm:"size(200);null"`        // 报警类型   ->WarningList
+	T_sn      string    `orm:"index;size(256);null"`  // 设备序列号
+	T_D_name  string    `orm:"size(256);null"`        // 设备名称
+	T_id      int       `orm:"size(200);null"`        // 传感器 ID
+	T_DS_name string    `orm:"size(256);null"`        // 传感器名称
+	T_Remark  string    `orm:"type(text);null"`       // 采集内容
+	T_Ut      time.Time `orm:"type(timestamp);null;"` // 采集时间
+	T_fUt     time.Time `orm:"type(timestamp);null;"` // 首次采集时间
 
 	T_Text string `orm:"type(text);null"` // 处理备注
 	T_Log  string `orm:"type(text);null"` // 通知日志
@@ -36,6 +36,13 @@ type Warning struct {
 	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
 }
 
+// 多字段索引
+func (u *Warning) TableIndex() [][]string {
+	return [][]string{
+		[]string{"T_pid", "T_tp", "T_State"},
+	}
+}
+
 /*
 分表机制
 |--------30天--------|
@@ -239,7 +246,7 @@ func Read_Warning_List(T_pid int, tpList []string, T_name string, T_handle int,
 
 	cond := orm.NewCondition()
 
-	cond1 := cond.And("T_State__gt", 0)
+	cond1 := orm.NewCondition()
 
 	if T_pid > 0 {
 		cond1 = cond1.And("T_pid", T_pid)
@@ -248,7 +255,15 @@ func Read_Warning_List(T_pid int, tpList []string, T_name string, T_handle int,
 		cond1 = cond1.And("T_tp__in", tpList)
 	}
 	if len(T_name) > 0 {
-		cond1 = cond1.AndCond(cond.Or("T_sn__icontains", T_name).Or("T_D_name__icontains", T_name).Or("T_id__icontains", T_name).Or("T_DS_name", T_name))
+		if len(T_name) == 16 {
+			cond1 = cond1.And("T_sn", T_name)
+		} else {
+			cond1 = cond1.AndCond(cond.Or("T_sn__icontains", T_name).
+				Or("T_D_name__icontains", T_name).
+				Or("T_id__icontains", T_name).
+				Or("T_DS_name__icontains", T_name))
+		}
+
 	}
 
 	if len(Time_start_) > 0 {
@@ -262,6 +277,9 @@ func Read_Warning_List(T_pid int, tpList []string, T_name string, T_handle int,
 	if T_handle == 1 {
 		cond1 = cond1.And("T_State__gt", 1)
 	}
+	if T_handle == 2 {
+		cond1 = cond1.And("T_State__gt", 0)
+	}
 	if T_handle == 3 {
 		cond1 = cond1.And("T_State", 3)
 	}
@@ -314,8 +332,7 @@ func Read_Admin_Warning_List(T_pids string, T_tp []string, T_name string, T_hand
 	}
 
 	cond := orm.NewCondition()
-
-	cond1 := cond.And("T_State__gt", 0)
+	cond1 := orm.NewCondition()
 
 	if T_pids != "*" && len(T_pids) > 0 {
 		list := lib.SplitStringIds(T_pids, "P")
@@ -326,7 +343,14 @@ func Read_Admin_Warning_List(T_pids string, T_tp []string, T_name string, T_hand
 
 	}
 	if len(T_name) > 0 {
-		cond1 = cond1.AndCond(cond.Or("T_sn__icontains", T_name).Or("T_D_name__icontains", T_name).Or("T_id__icontains", T_name).Or("T_DS_name", T_name))
+		if len(T_name) == 16 {
+			cond1 = cond1.And("T_sn", T_name)
+		} else {
+			cond1 = cond1.AndCond(cond.Or("T_sn__icontains", T_name).
+				Or("T_D_name__icontains", T_name).
+				Or("T_id__icontains", T_name).
+				Or("T_DS_name__icontains", T_name))
+		}
 	}
 
 	if len(Time_start_) > 0 {
@@ -339,6 +363,9 @@ func Read_Admin_Warning_List(T_pids string, T_tp []string, T_name string, T_hand
 	if T_handle == 1 {
 		cond1 = cond1.And("T_State__gt", 1)
 	}
+	if T_handle == 2 {
+		cond1 = cond1.And("T_State__gt", 0)
+	}
 	if T_handle == 3 {
 		cond1 = cond1.And("T_State", 3)
 	}
@@ -411,7 +438,7 @@ func Read_Warning_Backups(T_pid int, T_year string, T_month string, tpList []str
 	//不填或0:所有      1:已处理     2:未处理
 	if T_handle == 1 {
 		//cond1 = cond1.And("T_Text__isnull", true)
-		sql_WHERE += " AND t__tstate > 1"
+		sql_WHERE += " AND t__state > 1"
 	}
 	if T_handle == 3 {
 		//cond1 = cond1.And("T_Text__isnull", false).And("T_State", 2)