Explorar el Código

add:自动同步布点

zoie hace 2 meses
padre
commit
2dd31556e2

+ 8 - 8
Nats/Nats.go

@@ -156,8 +156,8 @@ func NatsInit() {
 		b, _ := msgpack.Marshal(&t_R)
 		_ = lib.Nats.Publish(m.Reply, b)
 
-		Task.Add_TaskLogs_T("nats", t_Req.T_task_id, "任务管理", "修改", t_Req)
-		System.Add_UserLogs_T("nats", "任务管理", "修改", t_Req)
+		Task.Add_TaskLogs_T("nats", t_Req.T_task_id, "任务管理", "修改状态", t_Req)
+		System.Add_UserLogs_T("nats", "任务管理", "修改状态", t_Req)
 
 	})
 
@@ -306,8 +306,8 @@ func NatsInit() {
 
 				b, _ := msgpack.Marshal(&t_R)
 				_ = lib.Nats.Publish(m.Reply, b)
-				Task.Add_TaskLogs_T("nats", t_Req.T_task_id, "任务管理", "修改", t_Req)
-				System.Add_UserLogs_T("nats", "任务管理", "修改", t_Req)
+				Task.Add_TaskLogs_T("nats", t_Req.T_task_id, "任务管理", "添加设备列表", t_Req)
+				System.Add_UserLogs_T("nats", "任务管理", "添加设备列表", t_Req)
 				return
 			}
 		}
@@ -340,8 +340,8 @@ func NatsInit() {
 		b, _ := msgpack.Marshal(&t_R)
 		_ = lib.Nats.Publish(m.Reply, b)
 
-		Task.Add_TaskLogs_T("nats", t_Req.T_task_id, "任务管理", "修改", t_Req)
-		System.Add_UserLogs_T("nats", "任务管理", "修改", t_Req)
+		Task.Add_TaskLogs_T("nats", t_Req.T_task_id, "任务管理", "添加设备编号", t_Req)
+		System.Add_UserLogs_T("nats", "任务管理", "添加设备编号", t_Req)
 
 	})
 
@@ -422,7 +422,7 @@ func NatsInit() {
 		_ = lib.Nats.Publish(m.Reply, b)
 
 		Task.Add_TaskLogs_T("nats", t_Req.T_task_id, "任务管理", "修改设备列表", t_Req)
-		System.Add_UserLogs_T("nats", "任务管理", "修改", t_Req)
+		System.Add_UserLogs_T("nats", "任务管理", "修改设备列表", t_Req)
 
 	})
 
@@ -501,7 +501,7 @@ func NatsInit() {
 		_ = lib.Nats.Publish(m.Reply, b)
 
 		Task.Add_TaskLogs_T("nats", task.T_task_id, "任务管理", "修改校准时间", t_Req)
-		System.Add_UserLogs_T("nats", "任务管理", "修改", t_Req)
+		System.Add_UserLogs_T("nats", "任务管理", "修改校准时间", t_Req)
 
 	})
 

+ 35 - 0
controllers/DeviceClass.go

@@ -758,3 +758,38 @@ func (c *DeviceClassController) List_Del_Duplication() {
 	c.ServeJSON()
 	return
 }
+
+// 同步证书到设备列表
+func (c *DeviceClassController) Sync_CertificatePdf_ToList() {
+	// 验证登录 User_is, User_r
+	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
+	}
+	CreateTime := c.GetString("CreateTime")
+	list := Device.Read_DeviceClassList_List_ByT_Certificate_sn_null(CreateTime)
+	for _, v := range list {
+		var pdf Certificate.CertificatePdf
+		pdfList, _ := Certificate.Read_CertificatePdf_T_layout_no(v.T_id, v.CreateTime.Format("2006-01-02"))
+		if len(pdfList) > 0 {
+			pdf = pdfList[0]
+		} else {
+			continue
+		}
+
+		v.T_Certificate_sn = pdf.T_Certificate_sn
+		v.T_failure_time = pdf.T_failure_time
+		v.T_pdf = pdf.T_pdf
+		if !Device.Update_DeviceClassList(v, "T_failure_time", "T_pdf", "T_Certificate_sn") {
+			c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
+			c.ServeJSON()
+			return
+		}
+	}
+	System.Add_UserLogs_T(User_r.T_uuid, "分类设备管理", "同步证书到设备列表", CreateTime)
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+	c.ServeJSON()
+	return
+}

+ 10 - 10
controllers/InfoTemplate.go

@@ -37,16 +37,16 @@ func (c *InfoTemplateController) Prepare() {
 
 	// 经销商只能访问列表接口,不能操作
 
-	if len(User_r.T_Distributor_id) > 0 {
-		checkUrl := []string{"Add", "Up", "Del", "Copy"}
-		for _, v := range checkUrl {
-			if strings.Contains(c.Ctx.Request.URL.Path, v) {
-				c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有操作权限!"}
-				c.ServeJSON()
-				return
-			}
-		}
-	}
+	//if len(User_r.T_Distributor_id) > 0 {
+	//	checkUrl := []string{"Add", "Up", "Del", "Copy"}
+	//	for _, v := range checkUrl {
+	//		if strings.Contains(c.Ctx.Request.URL.Path, v) {
+	//			c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有操作权限!"}
+	//			c.ServeJSON()
+	//			return
+	//		}
+	//	}
+	//}
 
 	c.User_r = User_r
 }

+ 149 - 60
controllers/Task.go

@@ -642,21 +642,22 @@ func (c *TaskController) Add() {
 	T_reporting := c.GetString("T_reporting")
 	T_delivery := c.GetString("T_delivery")
 
-	T_project := c.GetString("T_project")               // 项目 负责人UUID
-	T_province := c.GetString("T_province")             // 省
-	T_city := c.GetString("T_city")                     // 市
-	T_district := c.GetString("T_district")             // 区
-	T_province_code := c.GetString("T_province_code")   // 省 code
-	T_city_code := c.GetString("T_city_code")           // 市 code
-	T_district_code := c.GetString("T_district_code")   // 区 code
-	T_category := c.GetString("T_category")             // 类别
-	T_device_type := c.GetString("T_device_type")       // 设备类型
-	T_volume := c.GetString("T_volume")                 // 规格/容积
-	T_verify_type := c.GetString("T_verify_type")       // 验证类型
-	T_subject_matter := c.GetString("T_subject_matter") // 标的物名称
-	T_temp_range := c.GetString("T_temp_range")         // 验证温度范围
-	T_report_number := c.GetString("T_report_number")   // 报告编号
-	T_report_type := c.GetString("T_report_type")       // 报告类型
+	T_project := c.GetString("T_project")                 // 项目 负责人UUID
+	T_province := c.GetString("T_province")               // 省
+	T_city := c.GetString("T_city")                       // 市
+	T_district := c.GetString("T_district")               // 区
+	T_province_code := c.GetString("T_province_code")     // 省 code
+	T_city_code := c.GetString("T_city_code")             // 市 code
+	T_district_code := c.GetString("T_district_code")     // 区 code
+	T_category := c.GetString("T_category")               // 类别
+	T_device_type := c.GetString("T_device_type")         // 设备类型
+	T_volume := c.GetString("T_volume")                   // 规格/容积
+	T_verify_type := c.GetString("T_verify_type")         // 验证类型
+	T_subject_matter := c.GetString("T_subject_matter")   // 标的物名称
+	T_temp_range := c.GetString("T_temp_range")           // 验证温度范围
+	T_report_number := c.GetString("T_report_number")     // 报告编号
+	T_report_type := c.GetString("T_report_type")         // 报告类型
+	T_device_quantity, _ := c.GetInt("T_device_quantity") // 终端数量
 
 	// 查询信息采集信息
 	infoCollection, is := InfoCollection.Read_InfoCollection(T_InfoCollection_id)
@@ -683,21 +684,22 @@ func (c *TaskController) Add() {
 		T_Show:                 1,
 		T_State:                1,
 
-		T_project:        T_project,
-		T_province:       T_province,
-		T_city:           T_city,
-		T_district:       T_district,
-		T_province_code:  T_province_code,
-		T_city_code:      T_city_code,
-		T_district_code:  T_district_code,
-		T_category:       T_category,
-		T_device_type:    T_device_type,
-		T_volume:         T_volume,
-		T_verify_type:    T_verify_type,
-		T_subject_matter: T_subject_matter,
-		T_temp_range:     T_temp_range,
-		T_report_number:  T_report_number,
-		T_report_type:    T_report_type,
+		T_project:         T_project,
+		T_province:        T_province,
+		T_city:            T_city,
+		T_district:        T_district,
+		T_province_code:   T_province_code,
+		T_city_code:       T_city_code,
+		T_district_code:   T_district_code,
+		T_category:        T_category,
+		T_device_type:     T_device_type,
+		T_volume:          T_volume,
+		T_verify_type:     T_verify_type,
+		T_subject_matter:  T_subject_matter,
+		T_temp_range:      T_temp_range,
+		T_report_number:   T_report_number,
+		T_report_type:     T_report_type,
+		T_device_quantity: T_device_quantity,
 	}
 	if T_report_number != "/" {
 		_, exist := Task.Read_TaskbyT_report_number(T_report_number)
@@ -1025,21 +1027,22 @@ func (c *TaskController) Up() {
 	T_sn := c.GetString("T_sn")                                               // T_sn
 	T_CalibrationExpirationTime := c.GetString("T_CalibrationExpirationTime") // 校准到期时间
 
-	T_project := c.GetString("T_project")               // 项目 负责人UUID
-	T_province := c.GetString("T_province")             // 省
-	T_city := c.GetString("T_city")                     // 市
-	T_district := c.GetString("T_district")             // 区
-	T_province_code := c.GetString("T_province_code")   // 省 code
-	T_city_code := c.GetString("T_city_code")           // 市 code
-	T_district_code := c.GetString("T_district_code")   // 区 code
-	T_category := c.GetString("T_category")             // 类别
-	T_device_type := c.GetString("T_device_type")       // 设备类型
-	T_volume := c.GetString("T_volume")                 // 规格/容积
-	T_verify_type := c.GetString("T_verify_type")       // 验证类型
-	T_subject_matter := c.GetString("T_subject_matter") // 标的物名称
-	T_temp_range := c.GetString("T_temp_range")         // 验证温度范围
-	T_report_number := c.GetString("T_report_number")   // 报告编号
-	T_report_type := c.GetString("T_report_type")       // 报告编号
+	T_project := c.GetString("T_project")                 // 项目 负责人UUID
+	T_province := c.GetString("T_province")               // 省
+	T_city := c.GetString("T_city")                       // 市
+	T_district := c.GetString("T_district")               // 区
+	T_province_code := c.GetString("T_province_code")     // 省 code
+	T_city_code := c.GetString("T_city_code")             // 市 code
+	T_district_code := c.GetString("T_district_code")     // 区 code
+	T_category := c.GetString("T_category")               // 类别
+	T_device_type := c.GetString("T_device_type")         // 设备类型
+	T_volume := c.GetString("T_volume")                   // 规格/容积
+	T_verify_type := c.GetString("T_verify_type")         // 验证类型
+	T_subject_matter := c.GetString("T_subject_matter")   // 标的物名称
+	T_temp_range := c.GetString("T_temp_range")           // 验证温度范围
+	T_report_number := c.GetString("T_report_number")     // 报告编号
+	T_report_type := c.GetString("T_report_type")         // 报告编号
+	T_device_quantity, _ := c.GetInt("T_device_quantity") // 报告编号
 
 	T_task_id := c.GetString("T_task_id")
 	r, is := Task.Read_Task(T_task_id)
@@ -1049,7 +1052,7 @@ func (c *TaskController) Up() {
 		return
 	}
 
-	if T_report_number != "/" {
+	if len(T_report_number) > 0 && T_report_number != "/" {
 		t, exist := Task.Read_TaskbyT_report_number(T_report_number)
 		if exist && r.T_task_id != t.T_task_id {
 			c.Data["json"] = lib.JSONS{Code: 202, Msg: "报告编号已存在!"}
@@ -1353,6 +1356,10 @@ func (c *TaskController) Up() {
 		r.T_report_type = T_report_type
 		clos = append(clos, "T_report_type")
 	}
+	if T_device_quantity > 0 {
+		r.T_device_quantity = T_device_quantity
+		clos = append(clos, "T_device_quantity")
+	}
 
 	if !Task.Update_Task(r, clos...) {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
@@ -2601,20 +2608,21 @@ func (c *TaskController) Copy() {
 		T_Show:                 1,
 		T_State:                1,
 
-		T_project:        r.T_project,
-		T_province:       r.T_province,
-		T_city:           r.T_city,
-		T_district:       r.T_district,
-		T_province_code:  r.T_province_code,
-		T_city_code:      r.T_city_code,
-		T_district_code:  r.T_district_code,
-		T_category:       r.T_category,
-		T_device_type:    r.T_device_type,
-		T_volume:         r.T_volume,
-		T_verify_type:    r.T_verify_type,
-		T_subject_matter: r.T_subject_matter,
-		T_temp_range:     r.T_temp_range,
-		T_report_type:    r.T_report_type,
+		T_project:         r.T_project,
+		T_province:        r.T_province,
+		T_city:            r.T_city,
+		T_district:        r.T_district,
+		T_province_code:   r.T_province_code,
+		T_city_code:       r.T_city_code,
+		T_district_code:   r.T_district_code,
+		T_category:        r.T_category,
+		T_device_type:     r.T_device_type,
+		T_volume:          r.T_volume,
+		T_verify_type:     r.T_verify_type,
+		T_subject_matter:  r.T_subject_matter,
+		T_temp_range:      r.T_temp_range,
+		T_report_type:     r.T_report_type,
+		T_device_quantity: r.T_device_quantity,
 	}
 	var_.T_report_number, _ = Task.GenerateNextT_report_number(var_.T_device_type)
 	id, is := Task.Add_Task(var_)
@@ -2664,3 +2672,84 @@ func (c *TaskController) GenT_report_number() {
 	c.ServeJSON()
 	return
 }
+
+// 自动填写布点
+func (c *TaskController) Auto_fill_deploy() {
+	// 验证登录 User_is, User_r
+	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_task_id := c.GetString("T_task_id")
+	T_source, _ := c.GetInt("T_source")
+	task, is := Task.Read_Task(T_task_id)
+	if !is {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
+		c.ServeJSON()
+		return
+	}
+
+	verifyTemplate, is := VerifyTemplate.Read_VerifyTemplate(task.T_VerifyTemplate_id)
+	verifyTemplate_R := VerifyTemplate.VerifyTemplateToVerifyTemplate_R(verifyTemplate)
+
+	Map_List := VerifyTemplate.Read_VerifyTemplateMap_List_For_Data(task.T_VerifyTemplate_id, T_source, 0)
+	MapData := VerifyTemplate.Read_VerifyTemplateMapData_List(T_source, T_task_id, task.T_VerifyTemplate_id, Map_List)
+	T_deploy_list := verifyTemplate_R.T_deploy_list
+	//if len(T_deploy_list) == 0 {
+	//	// 解析设备列表备注的布点
+	//	deviceClassList := Device.Read_DeviceClassList_List_ByT_remark(task.T_class, "")
+	//	for _, v := range deviceClassList {
+	//		splitList := lib.SplitStringSeparator(v.T_remark, "|")
+	//		for _, T_name := range splitList {
+	//			T_deploy_list = append(T_deploy_list, VerifyTemplate.VerifyTemplateDeploy{T_name: T_name})
+	//		}
+	//	}
+	//}
+
+	// 循环查询布点
+	deployMap := make(map[string]string)
+	for _, deploy := range T_deploy_list {
+		deviceClassList := Device.Read_DeviceClassList_List_ByT_remark(task.T_class, deploy.T_name)
+		var snList []string
+		for _, v := range deviceClassList {
+			snList = append(snList, v.T_sn)
+		}
+		deployMap[deploy.T_name] = strings.Join(snList, "|")
+	}
+	MapDataList := make([]VerifyTemplate.VerifyTemplateMapData, 0)
+
+	for _, v := range MapData {
+		if snList, ok := deployMap[v.T_name]; ok {
+			val := VerifyTemplate.VerifyTemplateMapData{
+				T_source:               v.T_source,
+				T_task_id:              task.T_task_id,
+				T_VerifyTemplate_id:    task.T_VerifyTemplate_id,
+				T_VerifyTemplateMap_id: v.T_VerifyTemplateMap_id,
+				T_Required:             v.T_Required,
+				T_Construction:         v.T_Construction,
+				T_flow_sort:            v.T_flow_sort,
+				T_max_time:             v.T_max_time,
+				T_min_time:             v.T_min_time,
+
+				T_value:      snList,
+				T_start_time: v.T_start_time,
+			}
+			MapDataList = append(MapDataList, val)
+		}
+	}
+
+	ids, is := VerifyTemplate.AddOrUpdate_VerifyTemplateMapData_ADD_History(MapDataList, T_source, User_r.T_uuid)
+	if !is {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "保存失败"}
+		c.ServeJSON()
+		return
+	}
+	System.Add_UserLogs_T(User_r.T_uuid, "验证模版标签数据", "自动填写", ids)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: ids}
+	c.ServeJSON()
+	return
+}

+ 10 - 10
controllers/VerifyTemplate.go

@@ -39,16 +39,16 @@ func (c *VerifyTemplateController) Prepare() {
 
 	// 经销商只能访问列表接口,不能操作
 
-	if len(User_r.T_Distributor_id) > 0 {
-		checkUrl := []string{"Add", "Up", "Del", "Copy"}
-		for _, v := range checkUrl {
-			if strings.Contains(c.Ctx.Request.URL.Path, v) {
-				c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有操作权限!"}
-				c.ServeJSON()
-				return
-			}
-		}
-	}
+	//if len(User_r.T_Distributor_id) > 0 {
+	//	checkUrl := []string{"Add", "Up", "Del"}
+	//	for _, v := range checkUrl {
+	//		if strings.Contains(c.Ctx.Request.URL.Path, v) {
+	//			c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有操作权限!"}
+	//			c.ServeJSON()
+	//			return
+	//		}
+	//	}
+	//}
 
 	c.User_r = User_r
 }

+ 13 - 0
lib/libString.go

@@ -82,3 +82,16 @@ func MinutesDifference(startTime, endTime string) (float64, error) {
 	minutes := math.Ceil(duration.Minutes())
 	return minutes, nil
 }
+
+// 切割
+func SplitStringSeparator(str string, separator string) (r []string) {
+	if len(str) == 0 {
+		return r
+	}
+	if !strings.Contains(str, separator) {
+		return []string{str}
+	}
+	r = strings.Split(strings.Trim(str, separator), separator)
+
+	return r
+}

+ 25 - 0
models/Device/DeviceClassList.go

@@ -320,3 +320,28 @@ func Del_DeviceClassList_Duplication(T_class int) error {
 	logs.Debug("删除重复设备列表: ", num)
 	return nil
 }
+
+// 获取列表,用于自动填写布点
+func Read_DeviceClassList_List_ByT_remark(T_class_Id int, T_remark string) (r []DeviceClassList) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(DeviceClassList))
+
+	qs.Filter("T_class", T_class_Id).Filter("T_State", 1).Filter("T_remark__icontains", T_remark).All(&r)
+	return r
+}
+
+// 获取空证书列表,用于同步证书
+func Read_DeviceClassList_List_ByT_Certificate_sn_null(CreateTime string) (r []DeviceClassList) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(DeviceClassList))
+
+	qs.Filter("CreateTime__gte", CreateTime).Filter("T_failure_time", "").All(&r)
+
+	return r
+}

+ 7 - 0
models/Task/Task.go

@@ -234,6 +234,8 @@ type Task struct {
 	T_reporting_audit_record  string  `orm:"type(text);null"` // 验证报告审核记录
 	T_reporting_pass_time     string  `orm:"size(256);null"`  // 验证报告负责人通过时间
 
+	T_device_quantity int `orm:"size(20);default(0)"` //  终端数量 T_device_type=WZ 必填
+
 	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 保存时都会对时间自动更新
 }
@@ -298,6 +300,8 @@ type Task_ struct {
 	T_device_type         string
 	T_verify_type         string
 	T_reporting_pass_time string
+
+	T_device_quantity int
 }
 
 type Task_Stat struct {
@@ -402,6 +406,7 @@ type Task_Stat struct {
 
 	T_record string //
 
+	T_device_quantity int
 }
 
 func (t *Task) TableName() string {
@@ -489,6 +494,7 @@ func TaskToTask_(T Task, userMap, adminMap map[string]string) (T_ Task_) {
 	T_.T_device_type = T.T_device_type
 	T_.T_verify_type = T.T_verify_type
 	T_.T_reporting_pass_time = T.T_reporting_pass_time
+	T_.T_device_quantity = T.T_device_quantity
 
 	return T_
 }
@@ -619,6 +625,7 @@ func TaskToTask_Stat(T Task, userMap, adminMap map[string]string) (T_ Task_Stat)
 	T_.T_reporting_return_times = T.T_reporting_return_times
 	T_.T_reporting_audit_record = T.T_reporting_audit_record
 	T_.T_record = T.T_record
+	T_.T_device_quantity = T.T_device_quantity
 
 	return T_
 }

+ 8 - 7
routers/Device.go

@@ -15,13 +15,14 @@ func init() {
 	beego.Router("/DeviceClass/Del", &controllers.DeviceClassController{}, "*:Del")   // 删除设备分类
 
 	// 设备分类 - 设备列表
-	beego.Router("/DeviceClassList/List", &controllers.DeviceClassController{}, "*:List_List")                           // 设备分类列表
-	beego.Router("/DeviceClassList/Add", &controllers.DeviceClassController{}, "*:List_Add")                             // 添加设备分类列表
-	beego.Router("/DeviceClassList/Up", &controllers.DeviceClassController{}, "*:List_Up")                               // 编辑设备分类列表
-	beego.Router("/DeviceClassList/Del", &controllers.DeviceClassController{}, "*:List_Del")                             // 删除设备分类列表
-	beego.Router("/DeviceClassList/Copy", &controllers.DeviceClassController{}, "*:List_Copy")                           // 复制
-	beego.Router("/DeviceClassList/Template_Download", &controllers.DeviceClassController{}, "*:List_Template_Download") // 添加设备列表模版
-	beego.Router("/DeviceClassList/Del_Duplication", &controllers.DeviceClassController{}, "*:List_Del_Duplication")     // 删除重复设备列表
+	beego.Router("/DeviceClassList/List", &controllers.DeviceClassController{}, "*:List_List")                                        // 设备分类列表
+	beego.Router("/DeviceClassList/Add", &controllers.DeviceClassController{}, "*:List_Add")                                          // 添加设备分类列表
+	beego.Router("/DeviceClassList/Up", &controllers.DeviceClassController{}, "*:List_Up")                                            // 编辑设备分类列表
+	beego.Router("/DeviceClassList/Del", &controllers.DeviceClassController{}, "*:List_Del")                                          // 删除设备分类列表
+	beego.Router("/DeviceClassList/Copy", &controllers.DeviceClassController{}, "*:List_Copy")                                        // 复制
+	beego.Router("/DeviceClassList/Template_Download", &controllers.DeviceClassController{}, "*:List_Template_Download")              // 添加设备列表模版
+	beego.Router("/DeviceClassList/Del_Duplication", &controllers.DeviceClassController{}, "*:List_Del_Duplication")                  // 删除重复设备列表
+	beego.Router("/DeviceClassList/Sync_CertificatePdf_ToList", &controllers.DeviceClassController{}, "*:Sync_CertificatePdf_ToList") // 删除重复设备列表
 
 	// - 设备管理
 	beego.Router("/Device/List", &controllers.DeviceController{}, "*:List") // 设别列表

+ 4 - 3
routers/Task.go

@@ -64,8 +64,9 @@ func init() {
 	beego.Router("/Task/JPG/State", &controllers.TaskController{}, "*:DeviceData_JPGState") // 任务 图片生成状态
 
 	// 暂停申请
-	beego.Router("/TaskTime/Get", &controllers.TaskController{}, "*:TaskTimeList") // 任务列表
-	beego.Router("/TaskTime/Add", &controllers.TaskController{}, "*:TaskTimeAdd")  // 添加任务
-	beego.Router("/TaskTime/End", &controllers.TaskController{}, "*:TaskTimeEnd")  // 编辑任务
+	beego.Router("/TaskTime/Get", &controllers.TaskController{}, "*:TaskTimeList")              // 任务列表
+	beego.Router("/TaskTime/Add", &controllers.TaskController{}, "*:TaskTimeAdd")               // 添加任务
+	beego.Router("/TaskTime/End", &controllers.TaskController{}, "*:TaskTimeEnd")               // 编辑任务
+	beego.Router("/Task/Auto_fill_deploy", &controllers.TaskController{}, "*:Auto_fill_deploy") // 编辑任务
 
 }