Browse Source

2023-04-25

zoie 1 year ago
parent
commit
cf41ea76e8

+ 0 - 1
.idea/vcs.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$/../ColdVerify_handle" vcs="Git" />
     <mapping directory="$PROJECT_DIR$" vcs="Git" />
   </component>
 </project>

+ 0 - 1
Nats/Nats.go

@@ -70,7 +70,6 @@ func NatsInit() {
 			temp--
 			DeviceClassList.Store(k, temp)
 
-			//logs.Println("DeviceClass ---- ", c.T_sn, resp.Task.T_task_id, resp.Time_start, resp.Time_end)
 			err = Task.Import_TaskData_Back(T_sn, T_id, resp.Task.T_task_id, resp.Time_start, resp.Time_end)
 			if err == nil || strings.Contains(err.Error(), "doesn't exist") {
 				DeviceClassList.Delete(k)

+ 40 - 7
controllers/Certificate.go

@@ -8,7 +8,6 @@ import (
 	"ColdVerify_server/models/System"
 	beego "github.com/beego/beego/v2/server/web"
 	"math"
-	"strings"
 )
 
 type CertificateController struct {
@@ -65,6 +64,40 @@ func (c *CertificateController) List() {
 	return
 }
 
+// 删除-
+func (c *CertificateController) Get() {
+	// 验证登录 User_is, User_r
+	_, User_is := Account.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !User_is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
+		c.ServeJSON()
+		return
+	}
+
+	T_sn := c.GetString("T_sn")
+	if _, is := Certificate.Read_Certificate(T_sn); !is {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "证书不存在!"}
+		c.ServeJSON()
+		return
+	}
+
+	r, err := Certificate.Read_CertificatePdf_Newest(T_sn)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
+		c.ServeJSON()
+		return
+	}
+	if len(r) == 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "证书不存在!"}
+		c.ServeJSON()
+		return
+	}
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Certificate.CertificatePdfToCertificatePdf_R(r[0])}
+	c.ServeJSON()
+	return
+}
+
 // 添加-
 func (c *CertificateController) Add() {
 	// 验证登录 User_is, User_r
@@ -257,16 +290,16 @@ func (c *CertificateController) Pdf_Up() {
 		return
 	}
 
-	_, err = Certificate.Read_CertificatePdf(T_Certificate_sn, T_release_time, T_failure_time)
-	if !strings.Contains(err.Error(), "no row found") || err == nil {
-		c.Data["json"] = lib.JSONS{Code: 202, Msg: "数据已存在!"}
+	r, is := Certificate.Read_CertificatePdf_ById(Id)
+	if !is {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
 		c.ServeJSON()
 		return
 	}
 
-	r, is := Certificate.Read_CertificatePdf_ById(Id)
-	if !is {
-		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
+	_, err = Certificate.Read_CertificatePdf(T_Certificate_sn, T_release_time, T_failure_time)
+	if err == nil && r.T_failure_time != T_failure_time && r.T_release_time != T_release_time {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "数据已存在!"}
 		c.ServeJSON()
 		return
 	}

+ 24 - 7
controllers/DeviceClass.go

@@ -4,6 +4,7 @@ import (
 	"ColdVerify_server/conf"
 	"ColdVerify_server/lib"
 	"ColdVerify_server/models/Account"
+	"ColdVerify_server/models/Certificate"
 	"ColdVerify_server/models/Device"
 	"ColdVerify_server/models/System"
 	beego "github.com/beego/beego/v2/server/web"
@@ -247,6 +248,7 @@ func (c *DeviceClassController) List_Add() {
 	T_class, _ := c.GetInt("T_class")
 	T_id := c.GetString("T_id")
 	T_sn := c.GetString("T_sn")
+	T_remark := c.GetString("T_remark")
 
 	_, is := Device.Read_DeviceClass_ById(T_class)
 	if !is {
@@ -267,11 +269,20 @@ func (c *DeviceClassController) List_Add() {
 		return
 	}
 
+	var pdf Certificate.CertificatePdf
+	pdfList, _ := Certificate.Read_CertificatePdf_Newest(T_sn)
+	if len(pdfList) > 0 {
+		pdf = pdfList[0]
+	}
+
 	var_ := Device.DeviceClassList{
-		T_class: T_class,
-		T_id:    T_id,
-		T_sn:    T_sn,
-		T_State: 1,
+		T_class:        T_class,
+		T_id:           T_id,
+		T_sn:           T_sn,
+		T_failure_time: pdf.T_failure_time,
+		T_pdf:          pdf.T_pdf,
+		T_remark:       T_remark,
+		T_State:        1,
 	}
 
 	Id, is := Device.Add_DeviceClassList(var_)
@@ -297,6 +308,7 @@ func (c *DeviceClassController) List_Up() {
 	}
 
 	T_id := c.GetString("T_id")
+	T_remark := c.GetString("T_remark")
 
 	Id, err := c.GetInt("Id")
 	if err != nil {
@@ -319,9 +331,14 @@ func (c *DeviceClassController) List_Up() {
 		return
 	}
 
-	r.T_id = T_id
+	if len(T_id) > 0 {
+		r.T_id = T_id
+	}
+	if len(T_remark) > 0 {
+		r.T_remark = T_remark
+	}
 
-	if !Device.Update_DeviceClassList(r, "T_id") {
+	if !Device.Update_DeviceClassList(r, "T_id", "T_remark") {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
 		c.ServeJSON()
 		return
@@ -351,7 +368,7 @@ func (c *DeviceClassController) List_Del() {
 
 	if r, is := Device.Read_DeviceClassList_ById(Id); is {
 
-		Cr, is := Device.Read_DeviceClass_ById(r.T_class)
+		_, is = Device.Read_DeviceClass_ById(r.T_class)
 		if !is {
 			c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class 错误!"}
 			c.ServeJSON()

+ 18 - 11
controllers/Task.go

@@ -147,6 +147,7 @@ func (c *TaskController) Add() {
 
 	T_name := c.GetString("T_name")
 	T_uuid := c.GetString("T_uuid") // 用户uuid
+	T_VerifyTemplate_class := c.GetString("T_VerifyTemplate_class")
 	T_VerifyTemplate_id := c.GetString("T_VerifyTemplate_id")
 	T_deadline := c.GetString("T_deadline")
 	T_scheme := c.GetString("T_scheme")
@@ -155,17 +156,18 @@ func (c *TaskController) Add() {
 	T_delivery := c.GetString("T_delivery")
 
 	var_ := Task.Task{
-		T_class:             int(T_class_id),
-		T_uuid:              T_uuid,
-		T_name:              T_name,
-		T_VerifyTemplate_id: T_VerifyTemplate_id,
-		T_deadline:          T_deadline,
-		T_scheme:            T_scheme,
-		T_collection:        T_collection,
-		T_reporting:         T_reporting,
-		T_delivery:          T_delivery,
-		T_Show:              1,
-		T_State:             1,
+		T_class:                int(T_class_id),
+		T_uuid:                 T_uuid,
+		T_name:                 T_name,
+		T_VerifyTemplate_class: T_VerifyTemplate_class,
+		T_VerifyTemplate_id:    T_VerifyTemplate_id,
+		T_deadline:             T_deadline,
+		T_scheme:               T_scheme,
+		T_collection:           T_collection,
+		T_reporting:            T_reporting,
+		T_delivery:             T_delivery,
+		T_Show:                 1,
+		T_State:                1,
 	}
 
 	T_task_id, is := Task.Add_Task(var_)
@@ -195,6 +197,7 @@ func (c *TaskController) Up() {
 	T_name := c.GetString("T_name")
 	T_Show, T_Show_err := c.GetInt("T_Show")
 
+	T_VerifyTemplate_class := c.GetString("T_VerifyTemplate_class")
 	T_VerifyTemplate_id := c.GetString("T_VerifyTemplate_id")
 	T_deadline := c.GetString("T_deadline")
 	T_scheme := c.GetString("T_scheme")
@@ -230,6 +233,10 @@ func (c *TaskController) Up() {
 		r.T_Show = T_Show
 		clos = append(clos, "T_Show")
 	}
+	if len(T_VerifyTemplate_class) > 0 {
+		r.T_VerifyTemplate_class = T_VerifyTemplate_class
+		clos = append(clos, "T_VerifyTemplate_class")
+	}
 	if len(T_VerifyTemplate_id) > 0 {
 		r.T_VerifyTemplate_id = T_VerifyTemplate_id
 		clos = append(clos, "T_VerifyTemplate_id")

+ 10 - 3
controllers/TaskData.go

@@ -96,6 +96,13 @@ func (c *TaskDataController) Extract_TaskData_Back() {
 		return
 	}
 
+	// 采集中
+	if Task_r.T_collection_state == 2 {
+		c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+		c.ServeJSON()
+		return
+	}
+
 	DeviceClass_List := Device.Read_DeviceClassList_List_id(Task_r.T_class)
 	if len(DeviceClass_List) == 0 {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_Class_id 分类设备列表 为空!"}
@@ -759,14 +766,14 @@ func (c *TaskDataController) Check() {
 	for _, v := range List {
 		var r_json R_JSONS
 		r_json.T_sn = v.T_sn
-		r_json.T_id = v.T_id
+
 		r_json.Result = 200
 
-		DeviceSensor_data := Task.Read_TaskData_ById_List_(Task_r.T_task_id, v.T_sn, v.T_id)
+		DeviceSensor_data := Task.Read_TaskData_ById_List_(Task_r.T_task_id, v.T_sn)
 		r_json.T_unm = len(DeviceSensor_data)
 
 		if r_json.T_unm > 2 {
-
+			r_json.T_id = DeviceSensor_data[0].T_id
 			r_json.Time_end = DeviceSensor_data[len(DeviceSensor_data)-1].T_time
 			r_json.Time_start = DeviceSensor_data[0].T_time
 

+ 28 - 26
controllers/VerifyTemplate.go

@@ -187,26 +187,22 @@ func (c *VerifyTemplateController) Map_List() {
 	}
 
 	var r_jsons lib.R_JSONS
-	page, _ := c.GetInt("page")
-	if page < 1 {
-		page = 1
-	}
-	page_z, _ := c.GetInt("page_z")
-	if page_z < 1 {
-		page_z = conf.Page_size
-	}
+	//page, _ := c.GetInt("page")
+	//if page < 1 {
+	//	page = 1
+	//}
+	//page_z, _ := c.GetInt("page_z")
+	//if page_z < 1 {
+	//	page_z = conf.Page_size
+	//}
 	T_sort, _ := c.GetInt("T_sort")           // 排序
 	T_flow_sort, _ := c.GetInt("T_flow_sort") // 验证流程排序
 
 	T_VerifyTemplate_id := c.GetString("T_VerifyTemplate_id")
 
 	var cnt int64
-	List, cnt := VerifyTemplate.Read_VerifyTemplateMap_List(T_VerifyTemplate_id, T_sort, T_flow_sort, page, page_z)
-	page_size := math.Ceil(float64(cnt) / float64(page_z))
+	List, cnt := VerifyTemplate.Read_VerifyTemplateMap_List(T_VerifyTemplate_id, T_sort, T_flow_sort)
 	r_jsons.List = List
-	r_jsons.Page = page
-	r_jsons.Page_size = int(page_size)
-	r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
 	r_jsons.Num = int(cnt)
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
 	c.ServeJSON()
@@ -225,7 +221,6 @@ func (c *VerifyTemplateController) Map_Add() {
 
 	T_VerifyTemplate_id := c.GetString("T_VerifyTemplate_id")
 	T_name := c.GetString("T_name")
-	T_field := c.GetString("T_field")
 	T_text := c.GetString("T_text")
 	T_label, _ := c.GetInt("T_label")
 	T_source, _ := c.GetInt("T_source")
@@ -237,7 +232,6 @@ func (c *VerifyTemplateController) Map_Add() {
 	var_ := VerifyTemplate.VerifyTemplateMap{
 		T_VerifyTemplate_id: T_VerifyTemplate_id,
 		T_name:              T_name,
-		T_field:             T_field,
 		T_text:              T_text,
 		T_label:             T_label,
 		T_source:            T_source,
@@ -272,7 +266,6 @@ func (c *VerifyTemplateController) Map_Up() {
 	}
 
 	T_name := c.GetString("T_name")
-	T_field := c.GetString("T_field")
 	T_text := c.GetString("T_text")
 	T_label, T_label_err := c.GetInt("T_label")
 	T_sort, T_sort_err := c.GetInt("T_sort")
@@ -295,9 +288,6 @@ func (c *VerifyTemplateController) Map_Up() {
 	if len(T_name) > 0 {
 		r.T_name = T_name
 	}
-	if len(T_field) > 0 {
-		r.T_field = T_field
-	}
 	if len(T_text) > 0 {
 		r.T_text = T_text
 	}
@@ -321,7 +311,7 @@ func (c *VerifyTemplateController) Map_Up() {
 		r.T_flow_sort = T_flow_sort
 	}
 
-	if !VerifyTemplate.Update_VerifyTemplateMap(r, "T_name", "T_label", "T_text", "T_field", "T_sort", "T_source", "T_min_time", "T_max_time", "T_flow_sort") {
+	if !VerifyTemplate.Update_VerifyTemplateMap(r, "T_name", "T_label", "T_text", "T_sort", "T_source", "T_min_time", "T_max_time", "T_flow_sort") {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
 		c.ServeJSON()
 		return
@@ -375,9 +365,12 @@ func (c *VerifyTemplateController) Map_Data_List() {
 	}
 
 	T_VerifyTemplate_id := c.GetString("T_VerifyTemplate_id")
-	T_source, T_source_err := c.GetInt("T_source")
-	if T_source_err != nil || T_source == 0 {
-		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_source 错误!"}
+	T_source, _ := c.GetInt("T_source")
+
+	T_flow, _ := c.GetInt("T_flow")
+
+	if T_flow == 0 && T_source == 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_source Err!"}
 		c.ServeJSON()
 		return
 	}
@@ -390,7 +383,7 @@ func (c *VerifyTemplateController) Map_Data_List() {
 		return
 	}
 
-	Map_List := VerifyTemplate.Read_VerifyTemplateMap_List_For_Data(T_VerifyTemplate_id, T_source)
+	Map_List := VerifyTemplate.Read_VerifyTemplateMap_List_For_Data(T_VerifyTemplate_id, T_source, T_flow)
 	Data := VerifyTemplate.Read_VerifyTemplateMapData_List(T_source, T_task_id, T_VerifyTemplate_id, Map_List)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Data}
@@ -445,12 +438,21 @@ func (c *VerifyTemplateController) Map_Data_Pu() {
 		if len(v.T_value) == 0 {
 			continue
 		}
+		T_source := body.T_source
+		if T_source == 0 {
+			T_source = v.T_source
+		}
 		val := VerifyTemplate.VerifyTemplateMapData{
-			T_source:               body.T_source,
+			T_source:               T_source,
 			T_task_id:              body.T_task_id,
 			T_VerifyTemplate_id:    body.T_VerifyTemplate_id,
 			T_VerifyTemplateMap_id: v.T_VerifyTemplateMap_id,
-			T_value:                v.T_value,
+
+			T_flow_sort: v.T_flow_sort,
+			T_max_time:  v.T_max_time,
+			T_min_time:  v.T_min_time,
+
+			T_value: v.T_value,
 		}
 		MapDataList = append(MapDataList, val)
 	}

+ 13 - 15
models/Certificate/Certificate.go

@@ -137,11 +137,20 @@ func Read_Certificate_List(T_sn, Time_start, Time_end string, page int, page_z i
 	var maps_z []orm2.ParamsList
 	var maps []Certificate_
 
-	// 获取总条数
-	sql := "SELECT COUNT(ID) FROM certificate WHERE t__state=1"
+	sqlWhere := ""
 	if len(T_sn) > 0 {
-		sql = sql + " AND t_sn like \"%" + T_sn + "%\""
+		sqlWhere += " AND t_sn like \"%" + T_sn + "%\""
 	}
+	if len(Time_start) > 0 {
+		sqlWhere += " AND t_failure_time >= \"" + Time_start + "\""
+	}
+	if len(Time_end) > 0 {
+		sqlWhere += " AND t_failure_time <= \"" + Time_end + "\""
+	}
+
+	// 获取总条数
+	sql := "SELECT COUNT(ID) FROM certificate WHERE t__state=1"
+	sql = sql + sqlWhere
 	fmt.Println(sql)
 	_, err := o.Raw(sql).ValuesList(&maps_z)
 	if err != nil {
@@ -153,18 +162,7 @@ func Read_Certificate_List(T_sn, Time_start, Time_end string, page int, page_z i
 	//sql = "SELECT * FROM Certificate AS c LEFT JOIN (SELECT any_value(t_release_time) t_release_time,any_value(t_failure_time) t_failure_time,any_value(t_pdf) t_pdf,t__certificate_sn FROM (SELECT DISTINCT * FROM `CertificatePdf` WHERE t__state=1 ORDER BY id DESC) f GROUP BY t__certificate_sn) AS pdf ON pdf.t__certificate_sn=c.t_sn WHERE t__state=1"
 	sql = "SELECT * FROM certificate AS c LEFT JOIN (SELECT t_release_time,t_failure_time,t_pdf,t__certificate_sn FROM (SELECT DISTINCT * FROM `certificate_pdf` WHERE t__state=1 ORDER BY id DESC) f GROUP BY t__certificate_sn) AS pdf ON pdf.t__certificate_sn=c.t_sn WHERE t__state=1"
 
-	if len(T_sn) > 0 {
-		sql = sql + " AND t_sn like \"%" + T_sn + "%\""
-	}
-
-	if len(Time_start) > 0 {
-		sql = sql + " AND t_failure_time >= \"" + Time_start + "\""
-	}
-	if len(Time_end) > 0 {
-		sql = sql + " AND t_failure_time <= \"" + Time_end + "\""
-	}
-
-	sql = sql + " ORDER BY c.id DESC LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(page_z)
+	sql = sql + sqlWhere + " ORDER BY pdf.t_failure_time DESC LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(page_z)
 	fmt.Println(sql)
 	_, err = o.Raw(sql).QueryRows(&maps)
 

+ 12 - 0
models/Certificate/CertificatePdf.go

@@ -75,6 +75,18 @@ func Read_CertificatePdf(T_Certificate_sn, T_release_time, T_failure_time string
 	return r, err
 }
 
+// 获取最新的校准证书
+func Read_CertificatePdf_Newest(T_Certificate_sn string) (r []CertificatePdf, err error) {
+
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(CertificatePdf))
+	_, err = qs.Limit(1, 0).Filter("T_Certificate_sn", T_Certificate_sn).Filter("T_State", 1).OrderBy("-T_failure_time").All(&r)
+	if err != nil {
+		logs.Println(lib.FuncName(), err)
+	}
+	return r, err
+}
+
 // 添加
 func Add_CertificatePdf(r CertificatePdf) (id int64, is bool) {
 	o := orm.NewOrm()

+ 53 - 13
models/Device/Device.go

@@ -22,25 +22,59 @@ type Device struct {
 
 	T_sn string `orm:"size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
 
-	T_id   int       `orm:"size(256);null"`        // 标题
+	T_id   int       `orm:"size(256);null"`        // 编号
 	T_t    float32   `orm:"size(10);null"`         // 温度
 	T_rh   float32   `orm:"size(10);null"`         // 湿度
 	T_time time.Time `orm:"type(timestamp);null;"` // 采集时间
 
-	T_MSISDN             string `orm:"size(256);null"`      // 物联网卡
-	T_version            int    `orm:"size(2);;default(1)"` // 版本
-	T_signal             int    `orm:"size(2);;default(1)"` // 信号强度
-	T_electric           int    `orm:"size(2);;default(1)"` // 电量百分比
-	T_up_time_interval   int    `orm:"size(2);;default(1)"` // 上传时间间隔
-	T_note_time_interval int    `orm:"size(2);;default(1)"` // 记录时间间隔
-	T_note_file_num      int    `orm:"size(2);;default(1)"` // 记录文件数量
+	T_MSISDN             string `orm:"size(256);null"`     // 物联网卡
+	T_version            int    `orm:"size(2);default(1)"` // 版本
+	T_signal             int    `orm:"size(2);default(1)"` // 信号强度
+	T_electric           int    `orm:"size(2);default(1)"` // 电量百分比
+	T_up_time_interval   int    `orm:"size(2);default(1)"` // 上传时间间隔
+	T_note_time_interval int    `orm:"size(2);default(1)"` // 记录时间间隔
+	T_note_file_num      int    `orm:"size(2);default(1)"` // 记录文件数量
 
-	int `orm:"size(2);1"` // 电量百分比
-
-	T_State    int       `orm:"size(2);1"`                                             // 0 删除   1 正常
+	T_State    int       `orm:"size(2);default(1)"`                                    // 0 删除   1 正常
 	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
 	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
 }
+type Device_R struct {
+	Id                   int
+	T_sn                 string  // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+	T_id                 int     // 编号
+	T_t                  float32 // 温度
+	T_rh                 float32 // 湿度
+	T_time               string  // 采集时间
+	T_MSISDN             string  // 物联网卡
+	T_version            int     // 版本
+	T_signal             int     // 信号强度
+	T_electric           int     // 电量百分比
+	T_up_time_interval   int     // 上传时间间隔
+	T_note_time_interval int     // 记录时间间隔
+	T_note_file_num      int     // 记录文件数量
+	T_State              int     // 0 删除   1 正常
+}
+
+func DepotToDepot_R(t Device) (r Device_R) {
+	r.Id = t.Id
+	r.T_sn = t.T_sn
+	r.T_id = t.T_id
+	r.T_t = t.T_t
+	r.T_rh = t.T_rh
+	if !t.T_time.IsZero() {
+		r.T_time = t.T_time.Format("2006-01-02 15:04:05")
+	}
+	r.T_MSISDN = t.T_MSISDN
+	r.T_version = t.T_version
+	r.T_signal = t.T_signal
+	r.T_electric = t.T_electric
+	r.T_up_time_interval = t.T_up_time_interval
+	r.T_note_time_interval = t.T_note_time_interval
+	r.T_note_file_num = t.T_note_file_num
+	r.T_State = t.T_State
+	return r
+}
 
 func (t *Device) TableName() string {
 	return "device" // 数据库名称   // ************** 替换 FormulaList **************
@@ -191,13 +225,14 @@ func Update_Device(m Device, cols ...string) bool {
 }
 
 // 获取列表
-func Read_Device_List(T_sn string, T_MSISDN string, page int, page_z int) (r []Device, cnt int64) {
+func Read_Device_List(T_sn string, T_MSISDN string, page int, page_z int) (r []Device_R, cnt int64) {
 
 	o := orm.NewOrm()
 	// 也可以直接使用 Model 结构体作为表名
 
 	qs := o.QueryTable(new(Device))
 	var offset int64
+	var map_r []Device
 	if page <= 1 {
 		offset = 0
 	} else {
@@ -206,7 +241,12 @@ func Read_Device_List(T_sn string, T_MSISDN string, page int, page_z int) (r []D
 	cond := orm.NewCondition()
 	cond1 := cond.And("T_MSISDN__icontains", T_MSISDN).And("T_sn__icontains", T_sn).And("T_State", 1) // .AndNot("status__in", 1).Or("profile__age__gt", 2000)
 
-	qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r)
+	qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&map_r)
 	cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count()
+
+	for _, v := range map_r {
+		r = append(r, DepotToDepot_R(v))
+	}
+
 	return r, cnt
 }

+ 6 - 3
models/Device/DeviceClassList.go

@@ -20,9 +20,12 @@ import (
 type DeviceClassList struct {
 	Id int `orm:"column(ID);size(11);auto;pk"`
 
-	T_class int    `orm:"size(200);null"` // 分类
-	T_id    string `orm:"size(20);null"`  // 设备id
-	T_sn    string `orm:"size(256);null"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+	T_class        int    `orm:"size(200);null"`  // 分类
+	T_id           string `orm:"size(20);null"`   // 设备id
+	T_sn           string `orm:"size(256);null"`  // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+	T_failure_time string `orm:"size(256);null"`  // 失效时间
+	T_pdf          string `orm:"size(256);null"`  // pdf链接
+	T_remark       string `orm:"size(1024);null"` // 备注
 
 	T_State    int       `orm:"size(2);default(1)"`                                    // 0 删除   1 正常
 	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间

+ 47 - 44
models/Task/Task.go

@@ -15,21 +15,22 @@ import (
 
 // 模板
 type Task struct {
-	Id                  int    `orm:"column(ID);size(11);auto;pk"`
-	T_class             int    `orm:"size(200);default(0)"` // 分类id
-	T_task_id           string `orm:"size(256);null"`       // 任务ID
-	T_uuid              string `orm:"size(256);null"`       // 用户 UUID
-	T_name              string `orm:"size(256);null"`       // 标题
-	T_VerifyTemplate_id string `orm:"size(256);null"`       // 模板id
-	T_deadline          string `orm:"size(256);null"`       // 截止时间
-	T_scheme            string `orm:"size(256);null"`       // 实施方案 负责人UUID
-	T_collection        string `orm:"size(256);null"`       // 数据采集 负责人UUID
-	T_reporting         string `orm:"size(256);null"`       // 报告编写 负责人UUID
-	T_delivery          string `orm:"size(256);null"`       // 交付审核 负责人UUID
-	T_scheme_state      int    `orm:"size(2);default(0)"`   // 实施方案 状态 0 未完成 1 已完成
-	T_collection_state  int    `orm:"size(2);default(0)"`   // 数据采集 状态 0 未完成 1 已完成 2 处理中 3 已采集-无数据
-	T_reporting_state   int    `orm:"size(2);default(0)"`   // 报告编写 状态 0 未完成 1 已完成
-	T_delivery_state    int    `orm:"size(2);default(0)"`   // 交付审核 状态 0 未完成 1 已完成 2 处理中
+	Id                     int    `orm:"column(ID);size(11);auto;pk"`
+	T_class                int    `orm:"size(200);default(0)"` // 分类id
+	T_task_id              string `orm:"size(256);null"`       // 任务ID
+	T_uuid                 string `orm:"size(256);null"`       // 用户 UUID
+	T_name                 string `orm:"size(256);null"`       // 标题
+	T_VerifyTemplate_class string `orm:"size(256);null"`       // 模板id
+	T_VerifyTemplate_id    string `orm:"size(256);null"`       // 模板id
+	T_deadline             string `orm:"size(256);null"`       // 截止时间
+	T_scheme               string `orm:"size(256);null"`       // 实施方案 负责人UUID
+	T_collection           string `orm:"size(256);null"`       // 数据采集 负责人UUID
+	T_reporting            string `orm:"size(256);null"`       // 报告编写 负责人UUID
+	T_delivery             string `orm:"size(256);null"`       // 交付审核 负责人UUID
+	T_scheme_state         int    `orm:"size(2);default(0)"`   // 实施方案 状态 0 未完成 1 已完成
+	T_collection_state     int    `orm:"size(2);default(0)"`   // 数据采集 状态 0 未完成 1 已完成 2 处理中 3 已采集-无数据
+	T_reporting_state      int    `orm:"size(2);default(0)"`   // 报告编写 状态 0 未完成 1 已完成
+	T_delivery_state       int    `orm:"size(2);default(0)"`   // 交付审核 状态 0 未完成 1 已完成 2 处理中
 
 	T_doc1 string `orm:"type(text);null"` // 封面
 	T_pdf1 string `orm:"type(text);null"` // 封面
@@ -62,35 +63,36 @@ type Task_R struct {
 }
 
 type Task_ struct {
-	Id                  int
-	T_class             int    // 分类ID
-	T_task_id           string // 任务ID
-	T_uuid              string // 用户 UUID
-	T_user_name         string // 用户 UUID
-	T_name              string // 标题
-	T_VerifyTemplate_id string // 任务模板id
-	T_deadline          string // 截止时间
-	T_scheme            string // 实施方案 负责人UUID
-	T_collection        string // 数据采集 负责人UUID
-	T_reporting         string // 报告编写 负责人UUID
-	T_delivery          string // 交付审核 负责人UUID
-	T_scheme_state      int    // 实施方案 状态 0 未完成 1 已完成
-	T_collection_state  int    // 数据采集 状态 0 未完成 1 已完成
-	T_reporting_state   int    // 报告编写 状态 0 未完成 1 已完成
-	T_delivery_state    int    // 交付审核 状态 0 未完成 1 已完成
-	T_scheme_name       string // 实施方案 负责人姓名
-	T_collection_name   string // 数据采集 负责人姓名
-	T_reporting_name    string // 报告编写 负责人姓名
-	T_delivery_name     string // 交付审核 负责人姓名
-	T_doc1              string // 封面
-	T_pdf1              string // 封面
-	T_doc2              string // 报告
-	T_pdf2              string // 报告
-	T_doc3              string // 证书
-	T_pdf3              string // 证书
-	T_Show              int    // 0 公开 1 隐藏
-	T_Visit             int    // 浏览量
-	T_State             int    // 0 删除 1 正常
+	Id                     int
+	T_class                int    // 分类ID
+	T_task_id              string // 任务ID
+	T_uuid                 string // 用户 UUID
+	T_user_name            string // 用户 UUID
+	T_name                 string // 标题
+	T_VerifyTemplate_class string // 任务模板id
+	T_VerifyTemplate_id    string // 任务模板id
+	T_deadline             string // 截止时间
+	T_scheme               string // 实施方案 负责人UUID
+	T_collection           string // 数据采集 负责人UUID
+	T_reporting            string // 报告编写 负责人UUID
+	T_delivery             string // 交付审核 负责人UUID
+	T_scheme_state         int    // 实施方案 状态 0 未完成 1 已完成
+	T_collection_state     int    // 数据采集 状态 0 未完成 1 已完成
+	T_reporting_state      int    // 报告编写 状态 0 未完成 1 已完成
+	T_delivery_state       int    // 交付审核 状态 0 未完成 1 已完成
+	T_scheme_name          string // 实施方案 负责人姓名
+	T_collection_name      string // 数据采集 负责人姓名
+	T_reporting_name       string // 报告编写 负责人姓名
+	T_delivery_name        string // 交付审核 负责人姓名
+	T_doc1                 string // 封面
+	T_pdf1                 string // 封面
+	T_doc2                 string // 报告
+	T_pdf2                 string // 报告
+	T_doc3                 string // 证书
+	T_pdf3                 string // 证书
+	T_Show                 int    // 0 公开 1 隐藏
+	T_Visit                int    // 浏览量
+	T_State                int    // 0 删除 1 正常
 }
 
 func (t *Task) TableName() string {
@@ -142,6 +144,7 @@ func TaskToTask_(T Task, userMap, adminMap map[string]string) (T_ Task_) {
 	T_.T_uuid = T.T_uuid
 	T_.T_user_name = userMap[T.T_uuid]
 	T_.T_name = T.T_name
+	T_.T_VerifyTemplate_class = T.T_VerifyTemplate_class
 	T_.T_VerifyTemplate_id = T.T_VerifyTemplate_id
 	T_.T_deadline = T.T_deadline
 	T_.T_scheme = T.T_scheme

+ 7 - 5
models/Task/TaskData.go

@@ -121,7 +121,9 @@ func Import_TaskData_Back(Sn string, T_id string, T_task_id string, Time_start s
 	o := orm.NewOrm()
 	// 开始插入数据
 	sql := "insert into z_task_data_" + 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 + "'"
+	if len(Time_start) > 0 && len(Time_end) > 0 {
+		sql = sql + " WHERE t_time >= '" + Time_start + "' AND t_time <= '" + Time_end + "'"
+	}
 	logs.Println(sql)
 	_, err := o.Raw(sql).Exec()
 	if err != nil {
@@ -234,14 +236,14 @@ func Read_TaskData_ById_List(T_task_id string, SN string, T_id int, Time_start_
 	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) []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_id = " + strconv.Itoa(T_id) + " AND "
+	sql_condition += "t_sn = '" + 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_times,t_time  FROM z_task_data_" + T_task_id + " WHERE " + sql_condition + " ORDER BY t_time "
@@ -257,7 +259,7 @@ func Read_TaskData_ById_ClassList(T_task_id string) []TaskDataClass_ {
 	var maps []TaskDataClass_
 
 	//fmt.Println("maps_z;",maps_z[0][0])
-	sql := "SELECT DISTINCT t_sn,t_id FROM z_task_data_" + T_task_id + " ORDER BY t_id "
+	sql := "SELECT DISTINCT t_sn FROM z_task_data_" + T_task_id + " ORDER BY t_sn"
 
 	fmt.Println(sql)
 	o.Raw(sql).QueryRows(&maps)

+ 26 - 25
models/VerifyTemplate/VerifyTemplateMap.go

@@ -27,10 +27,9 @@ type VerifyTemplateMap struct {
 	//9:当期时间(开始与结束时间)(2022-01-01 13:08|2022-01-02 13:08)
 	//10:图片
 	//11:CAD
-	T_name  string `orm:"size(256);null"`     // 标签名称
-	T_field string `orm:"size(256);null"`     // 标签
-	T_text  string `orm:"size(256);null"`     // 描述
-	T_sort  int    `orm:"size(2);default(1)"` // 排序
+	T_name string `orm:"size(256);null"`     // 标签名称
+	T_text string `orm:"size(256);null"`     // 描述
+	T_sort int    `orm:"size(2);default(1)"` // 排序
 
 	// 验证流程
 	T_flow_sort int `orm:"size(2);default(0)"` // 验证流程排序
@@ -46,7 +45,6 @@ type VerifyTemplateMap_R struct {
 	T_source    int    // 数据类型
 	T_label     int    // 来源
 	T_name      string // 标签名称
-	T_field     string // 标签
 	T_text      string // 描述
 	T_sort      int    // 排序
 	T_flow_sort int    // 验证流程排序
@@ -71,7 +69,6 @@ func VerifyTemplateMapToVerifyTemplateMap_R(T VerifyTemplateMap) (T_r VerifyTemp
 	T_r.T_source = T.T_source
 	T_r.T_label = T.T_label
 	T_r.T_name = T.T_name
-	T_r.T_field = T.T_field
 	T_r.T_text = T.T_text
 	T_r.T_sort = T.T_sort
 	T_r.T_flow_sort = T.T_flow_sort
@@ -154,30 +151,25 @@ func Update_VerifyTemplateMap(m VerifyTemplateMap, cols ...string) bool {
 }
 
 // 获取列表
-func Read_VerifyTemplateMap_List(T_VerifyTemplate_id string, T_sort, T_flow_sort, page, page_z int) ([]VerifyTemplateMap_R, int64) {
+func Read_VerifyTemplateMap_List(T_VerifyTemplate_id string, T_sort, T_flow_sort int) ([]VerifyTemplateMap_R, int64) {
 
 	o := orm.NewOrm()
 	// 也可以直接使用 Model 结构体作为表名
 	var r []VerifyTemplateMap
 	qs := o.QueryTable(new(VerifyTemplateMap))
-	var offset int64
-	if page <= 1 {
-		offset = 0
-	} else {
-		offset = int64((page - 1) * page_z)
-	}
 	cond := orm.NewCondition()
 	cond1 := cond.And("T_VerifyTemplate_id", T_VerifyTemplate_id) // .AndNot("status__in", 1).Or("profile__age__gt", 2000)
 	// 排序 默认升序
-	sort := "T_sort"
-	if T_sort == 1 {
-		sort = "-T_sort"
-	}
-	flow_sort := "T_flow_sort"
-	if T_flow_sort == 1 {
-		flow_sort = "-T_flow_sort"
+
+	if T_sort == 2 {
+		qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-T_sort").All(&r)
+	} else if T_flow_sort == 1 {
+		qs.SetCond((*orm2.Condition)(cond1)).OrderBy("T_flow_sort").All(&r)
+	} else if T_flow_sort == 2 {
+		qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-T_flow_sort").All(&r)
+	} else {
+		qs.SetCond((*orm2.Condition)(cond1)).OrderBy("T_sort").All(&r)
 	}
-	qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy(sort, flow_sort).All(&r)
 	cnt, _ := qs.SetCond((*orm2.Condition)(cond1)).Count()
 
 	// 转换
@@ -189,20 +181,29 @@ func Read_VerifyTemplateMap_List(T_VerifyTemplate_id string, T_sort, T_flow_sort
 	return VerifyTemplateMap_r, cnt
 }
 
-func Read_VerifyTemplateMap_List_For_Data(T_VerifyTemplate_id string, T_source int) []VerifyTemplateMap {
+func Read_VerifyTemplateMap_List_For_Data(T_VerifyTemplate_id string, T_source, T_flow int) []VerifyTemplateMap {
 
 	o := orm.NewOrm()
 	// 也可以直接使用 Model 结构体作为表名
 	var r []VerifyTemplateMap
 	qs := o.QueryTable(new(VerifyTemplateMap))
 	source := []int{T_source}
+	if T_source == 2 {
+		source = append(source, 3)
+	}
 	if T_source != 3 {
 		source = append(source, 0)
 	}
-	cond := orm.NewCondition()
-	cond1 := cond.And("T_source__in", source).And("T_VerifyTemplate_id", T_VerifyTemplate_id) // .AndNot("status__in", 1).Or("profile__age__gt", 2000)
 
-	qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-T_sort").All(&r)
+	cond := orm.NewCondition()
+	if T_flow == 1 {
+		// app时间流程 排序id不等于0
+		cond = cond.AndNot("T_flow_sort", 0).And("T_VerifyTemplate_id", T_VerifyTemplate_id)
+		qs.SetCond((*orm2.Condition)(cond)).OrderBy("T_flow_sort").All(&r)
+	} else {
+		cond = cond.And("T_source__in", source).And("T_VerifyTemplate_id", T_VerifyTemplate_id) // .AndNot("status__in", 1).Or("profile__age__gt", 2000)
+		qs.SetCond((*orm2.Condition)(cond)).OrderBy("T_sort").All(&r)
+	}
 
 	return r
 }

+ 32 - 22
models/VerifyTemplate/VerifyTemplateMapData.go

@@ -18,37 +18,33 @@ type VerifyTemplateMapData struct {
 	T_VerifyTemplateMap_id string `orm:"index,size(256);null"` // 标签id
 	T_value                string `orm:"size(1024);null"`      // 内容
 
+	// 验证流程
+	T_flow_sort int `orm:"size(2);default(0)"` // 验证流程排序
+	T_max_time  int `orm:"size(256);null"`     // 验证流程最大时间
+	T_min_time  int `orm:"size(256);null"`     // 验证流程最小时间
+
 	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
 	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
 }
 
 type VerifyTemplateMapData_R struct {
+	T_id                   int
 	T_VerifyTemplateMap_id string // 标签id
+	T_source               int
 	T_label                int    //
 	T_name                 string // 标题
-	T_field                string // 标题
 	T_text                 string // 标题
-	T_value                string // 标题
+	T_value                string //
+	// 验证流程
+	T_flow_sort int // 验证流程排序
+	T_max_time  int // 验证流程最大时间
+	T_min_time  int // 验证流程最小时间
 }
 
 func (t *VerifyTemplateMapData) TableName() string {
 	return "verify_template_map_data" // 数据库名称   // ************** 替换 FormulaList **************
 }
 
-// 多字段索引
-//func (t *VerifyTemplateMapData) TableIndex() [][]string {
-//	return [][]string{
-//		[]string{"T_task_id", "T_VerifyTemplate_id", "T_VerifyTemplateMap_id"},
-//	}
-//}
-
-// 多字段唯一键
-//func (t *VerifyTemplateMapData) TableUnique() [][]string {
-//	return [][]string{
-//		[]string{"T_task_id", "T_VerifyTemplate_id", "T_VerifyTemplateMap_id"},
-//	}
-//}
-
 func init() {
 	//注册模型
 	orm.RegisterModel(new(VerifyTemplateMapData))
@@ -58,20 +54,30 @@ func init() {
 // -------------------------------------------------------------
 func VerifyTemplateMapToVerifyTemplateMapData_R(T VerifyTemplateMap) (T_r VerifyTemplateMapData_R) {
 	T_r.T_VerifyTemplateMap_id = T.T_id
+	T_r.T_source = T.T_source
 	T_r.T_label = T.T_label
 	T_r.T_name = T.T_name
-	T_r.T_field = T.T_field
 	T_r.T_text = T.T_text
+
+	T_r.T_flow_sort = T.T_flow_sort
+	T_r.T_max_time = T.T_max_time
+	T_r.T_min_time = T.T_min_time
+
 	T_r.T_value = ""
 	return T_r
 }
 
 func VerifyTemplateMapDataToVerifyTemplateMapData_R(T VerifyTemplateMap, VerifyTemplateMapData map[string]string) (T_r VerifyTemplateMapData_R) {
 	T_r.T_VerifyTemplateMap_id = T.T_id
+	T_r.T_source = T.T_source
 	T_r.T_label = T.T_label
 	T_r.T_name = T.T_name
-	T_r.T_field = T.T_field
 	T_r.T_text = T.T_text
+
+	T_r.T_flow_sort = T.T_flow_sort
+	T_r.T_max_time = T.T_max_time
+	T_r.T_min_time = T.T_min_time
+
 	T_r.T_value = ""
 	if v, ok := VerifyTemplateMapData[T.T_id]; ok {
 		T_r.T_value = v
@@ -114,8 +120,10 @@ func Read_VerifyTemplateMapData_List(T_source int, T_task_id, T_VerifyTemplate_i
 	if len(r) == 0 {
 		// 转换
 		var VerifyTemplateMapData_r []VerifyTemplateMapData_R
-		for _, v := range Map_List {
-			VerifyTemplateMapData_r = append(VerifyTemplateMapData_r, VerifyTemplateMapToVerifyTemplateMapData_R(v))
+		for k, v := range Map_List {
+			Data_r := VerifyTemplateMapToVerifyTemplateMapData_R(v)
+			Data_r.T_id = k
+			VerifyTemplateMapData_r = append(VerifyTemplateMapData_r, Data_r)
 		}
 
 		return VerifyTemplateMapData_r
@@ -123,8 +131,10 @@ func Read_VerifyTemplateMapData_List(T_source int, T_task_id, T_VerifyTemplate_i
 
 	// 转换
 	var VerifyTemplateMapData_r []VerifyTemplateMapData_R
-	for _, v := range Map_List {
-		VerifyTemplateMapData_r = append(VerifyTemplateMapData_r, VerifyTemplateMapDataToVerifyTemplateMapData_R(v, VerifyTemplateMapDataToMap(r)))
+	for k, v := range Map_List {
+		Data_r := VerifyTemplateMapDataToVerifyTemplateMapData_R(v, VerifyTemplateMapDataToMap(r))
+		Data_r.T_id = k
+		VerifyTemplateMapData_r = append(VerifyTemplateMapData_r, Data_r)
 	}
 	return VerifyTemplateMapData_r
 }

+ 1 - 0
routers/Certificate.go

@@ -8,6 +8,7 @@ import (
 func init() {
 	// - 校准证书
 	beego.Router("/Certificate/List", &controllers.CertificateController{}, "*:List") // 校准证书列表
+	beego.Router("/Certificate/Get", &controllers.CertificateController{}, "*:Get")   // 获取最新校准证书
 	beego.Router("/Certificate/Add", &controllers.CertificateController{}, "*:Add")   // 添加校准证书
 	beego.Router("/Certificate/Del", &controllers.CertificateController{}, "*:Del")   // 删除校准证书
 	// - 校准证书pdf