package controllers import ( "ColdVerify_server/conf" "ColdVerify_server/lib" "ColdVerify_server/models/Account" "ColdVerify_server/models/Certificate" "ColdVerify_server/models/Device" "ColdVerify_server/models/System" "ColdVerify_server/models/Task" "fmt" beego "github.com/beego/beego/v2/server/web" "math" "strings" ) type DeviceClassController struct { beego.Controller } // 列表 - func (c *DeviceClassController) List() { // 验证登录 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 } 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 } T_name := c.GetString("T_name") var cnt int64 List, cnt := Device.Read_DeviceClass_List(User_r.T_uuid, T_name, page, page_z) page_size := math.Ceil(float64(cnt) / float64(page_z)) 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() return } // 获取- func (c *DeviceClassController) 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 } Id, err := c.GetInt("Id") if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } r, is := Device.Read_DeviceClass_ById(Id) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r} c.ServeJSON() return } // 添加- func (c *DeviceClassController) Add() { // 验证登录 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_name := c.GetString("T_name") var_ := Device.DeviceClass{ T_uuid: User_r.T_uuid, T_name: T_name, T_State: 1, } Id, is := Device.Add_DeviceClass(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} c.ServeJSON() return } // 修改- func (c *DeviceClassController) Up() { // 验证登录 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_name := c.GetString("T_name") Id, err := c.GetInt("Id") if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } r, is := Device.Read_DeviceClass_ById(Id) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } // ....... if len(T_name) > 0 { r.T_name = T_name } // ....... if !Device.Update_DeviceClass(r, "T_name") { c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"} c.ServeJSON() return } System.Add_UserLogs_T(User_r.T_uuid, "分类管理", "修改", r) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() return } // 删除- func (c *DeviceClassController) Del() { // 验证登录 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 } Id, err := c.GetInt("Id") if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } if r, is := Device.Read_DeviceClass_ById(Id); is { if !Device.Delete_DeviceClass_(r) { c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"} c.ServeJSON() return } System.Add_UserLogs_T(User_r.T_uuid, "分类管理", "删除", r) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } //-------------------------- // 列表 - func (c *DeviceClassController) List_List() { // 验证登录 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 //} 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 } T_class, _ := c.GetInt("T_class") T_sn := c.GetString("T_sn") T_remark := c.GetString("T_remark") _, is := Device.Read_DeviceClass_ById(T_class) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class 错误!"} c.ServeJSON() return } var cnt int64 //List, cnt := Device.Read_DeviceClassList_List(T_class, T_sn, page, 9999) List, cnt := Device.Read_DeviceClassList_OrderList(T_class, T_sn, T_remark, page, 9999) page_size := math.Ceil(float64(cnt) / float64(page_z)) 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() return } // 添加- 旧功能 func (c *DeviceClassController) List_Add1() { // 验证登录 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_class, _ := c.GetInt("T_class") //方式1:001,002,003,004,005,008 //方式2:001~005,008 T_layout_no_list := c.GetString("T_layout_no_list") //T_sn := c.GetString("T_sn") T_remark := c.GetString("T_remark") _, is := Device.Read_DeviceClass_ById(T_class) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class 错误"} c.ServeJSON() return } list := strings.Split(strings.TrimRight(T_layout_no_list, ","), ",") snMap := make(map[string]string) excludeId := make(map[string]struct{}) errList := []string{} var successNum int // 成功数量 for _, v := range list { if strings.Contains(v, "!") { excludeId[fmt.Sprintf("%03d", lib.To_int(strings.TrimLeft(strings.Trim(v, "!"), "0")))] = struct{}{} continue } // 001~005 if strings.Contains(v, "~") { vlist := strings.Split(v, "~") if len(vlist) != 2 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "布局编号格式错误!"} c.ServeJSON() return } vstart, vend := lib.To_int(strings.TrimLeft(vlist[0], "0")), lib.To_int(strings.TrimLeft(vlist[1], "0")) for i := vstart; i < vend+1; i++ { T_id := fmt.Sprintf("%03d", i) cert, is := Certificate.Read_Certificate_ByT_layout_no(T_id) if !is { //c.Data["json"] = lib.JSONS{Code: 202, Msg: fmt.Sprintf("%s布局编号不存在!", T_id)} //c.ServeJSON() //return errList = append(errList, fmt.Sprintf("%s布局编号不存在!", T_id)) continue } snMap[T_id] = cert.T_sn } } else { // 001,002 cert, is := Certificate.Read_Certificate_ByT_layout_no(v) if !is { //c.Data["json"] = lib.JSONS{Code: 202, Msg: fmt.Sprintf("%s布局编号不存在!", v)} //c.ServeJSON() //return errList = append(errList, v) continue } snMap[v] = cert.T_sn } } errList2 := []string{} succesId := []string{} for T_id, T_sn := range snMap { if _, ok := excludeId[T_id]; ok { continue } //if _, is = Device.Read_Device(T_sn); !is { // c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn 不存在!"} // c.ServeJSON() // return //} if dc, is := Device.Read_DeviceClassList_T_class_T_sn(T_class, T_sn); is && dc.Id > 0 { successNum += 1 continue } var pdf Certificate.CertificatePdf pdfList, _ := Certificate.Read_CertificatePdf_Newest(T_id) if len(pdfList) > 0 { pdf = pdfList[0] } var_ := Device.DeviceClassList{ 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, } _, is = Device.Add_DeviceClassList(var_) if !is { //c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"} //c.ServeJSON() //return errList2 = append(errList2, T_id) continue } successNum += 1 succesId = append(succesId, T_id) System.Add_UserLogs_T(User_r.T_uuid, "分类设备管理", "添加", var_) } if len(errList) == 0 && len(errList2) == 0 { c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: successNum} c.ServeJSON() return } var errStr string if len(errList) > 0 { errStr += strings.Join(errList, ",") + "编号不存在" } if len(errList2) > 0 { if len(errStr) > 0 { errStr += "," } errStr += strings.Join(errList2, ",") + "添加失败" } //if len(succesId) > 0 { // if len(errStr) > 0 { // errStr += "," // } // errStr += strings.Join(succesId, ",") + "添加成功" //} c.Data["json"] = lib.JSONS{Code: 210, Msg: errStr, Data: successNum} c.ServeJSON() return } func (c *DeviceClassController) List_Add() { // 验证登录 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_class, _ := c.GetInt("T_class") T_sn_id_list := c.GetString("T_sn_id_list") list := strings.Split(strings.TrimRight(T_sn_id_list, "|"), "|") T_remark := c.GetString("T_remark") _, is := Device.Read_DeviceClass_ById(T_class) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class 错误"} c.ServeJSON() return } var successNum int // 成功数量 errList := []string{} errList2 := []string{} succesId := []string{} for _, sn_id := range list { T_sn := strings.Split(sn_id, ",")[0] T_id := strings.Split(sn_id, ",")[1] // 判断是否已存在sn dc, is := Device.Read_DeviceClassList_T_class_T_sn(T_class, T_sn) // 添加的id和数据库已存在id相同 if is && dc.T_id == T_id { successNum += 1 continue } // 添加的id和数据库已存在id不同 if is && dc.T_id != T_id { _, is = Device.Read_DeviceClassList_T_class_T_id(T_class, T_id) if is { errList2 = append(errList2, sn_id) continue } dc.T_id = T_id dc.T_remark = T_remark if !Device.Update_DeviceClassList(dc, "T_id", "T_remark") { errList = append(errList, sn_id) } else { successNum += 1 } continue } var pdf Certificate.CertificatePdf //pdfList, _ := Certificate.Read_CertificatePdf_Newest(T_sn) pdfList, _ := Certificate.Read_CertificatePdf_T_layout_no(T_id, "") if len(pdfList) > 0 { pdf = pdfList[0] } var_ := Device.DeviceClassList{ 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_Certificate_sn: pdf.T_Certificate_sn, T_remark: T_remark, T_State: 1, } _, is = Device.Add_DeviceClassList(var_) if !is { errList = append(errList, sn_id) continue } successNum += 1 succesId = append(succesId, sn_id) System.Add_UserLogs_T(User_r.T_uuid, "分类设备管理", "添加", var_) } if len(errList) == 0 && len(errList2) == 0 { c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: successNum} c.ServeJSON() return } var errStr string if len(errList2) > 0 { errStr += strings.Join(errList2, ",") + "编号已存在" } if len(errList) > 0 { if len(errStr) > 0 { errStr += "," } errStr += strings.Join(errList, ",") + "添加失败" } c.Data["json"] = lib.JSONS{Code: 210, Msg: errStr, Data: successNum} c.ServeJSON() return } func (c *DeviceClassController) List_Copy() { // 验证登录 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_copy_task_id := c.GetString("T_copy_task_id") copy_task, is := Task.Read_Task(T_copy_task_id) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_copy_task_id 错误!"} c.ServeJSON() return } T_paste_task_id := c.GetString("T_paste_task_id") paste_task, is := Task.Read_Task(T_paste_task_id) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_paste_task_id 错误!"} c.ServeJSON() return } copyList, cnt := Device.Read_DeviceClassList_OrderList(copy_task.T_class, "", "", 0, 9999) var successNum int // 成功数量 errList := []string{} for _, v := range copyList { ds, is2 := Device.Read_DeviceClassList_T_class_T_id(paste_task.T_class, v.T_id) // id存在 更新 if is2 { ds.T_sn = v.T_sn ds.T_remark = v.T_remark if !Device.Update_DeviceClassList(ds, "T_sn", "T_remark") { errList = append(errList, v.T_id) continue } } else { // 判断是否已存在sn _, is3 := Device.Read_DeviceClassList_T_class_T_sn(paste_task.T_class, v.T_sn) // 删除要粘贴的任务里重复的sn if is3 { if !Device.Delete_DeviceClassList_(ds) { errList = append(errList, v.T_id) continue } } // 不存在则添加 var pdf Certificate.CertificatePdf pdfList, _ := Certificate.Read_CertificatePdf_T_layout_no(v.T_id, "") if len(pdfList) > 0 { pdf = pdfList[0] } var_ := Device.DeviceClassList{ T_class: paste_task.T_class, T_id: v.T_id, T_sn: v.T_sn, T_failure_time: pdf.T_failure_time, T_pdf: pdf.T_pdf, T_Certificate_sn: pdf.T_Certificate_sn, T_remark: v.T_remark, T_State: 1, } _, is = Device.Add_DeviceClassList(var_) if !is { errList = append(errList, v.T_id) continue } } } if len(errList) == 0 { c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: cnt} c.ServeJSON() return } var errStr string if len(errList) > 0 { if len(errStr) > 0 { errStr += "," } errStr += strings.Join(errList, ",") + "粘贴失败" } c.Data["json"] = lib.JSONS{Code: 210, Msg: errStr, Data: successNum} c.ServeJSON() return } // 修改- func (c *DeviceClassController) List_Up() { // 验证登录 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_id := c.GetString("T_id") T_remark := c.GetString("T_remark") Id, err := c.GetInt("Id") if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } r, is := Device.Read_DeviceClassList_ById(Id) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } _, is = Device.Read_DeviceClass_ById(r.T_class) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class 错误!"} c.ServeJSON() return } _, is = Device.Read_DeviceClassList_T_class_T_id(r.T_class, T_id) if is && T_id != r.T_id { c.Data["json"] = lib.JSONS{Code: 202, Msg: T_id + "编号已存在!"} c.ServeJSON() return } if len(T_id) > 0 { r.T_id = T_id // 修改布局编号对应的证书 var pdf Certificate.CertificatePdf pdfList, _ := Certificate.Read_CertificatePdf_T_layout_no(T_id, r.CreateTime.Format("2006-01-02")) if len(pdfList) > 0 { pdf = pdfList[0] } r.T_failure_time = pdf.T_failure_time r.T_pdf = pdf.T_pdf r.T_Certificate_sn = pdf.T_Certificate_sn } if len(T_remark) > 0 { r.T_remark = T_remark } if !Device.Update_DeviceClassList(r, "T_id", "T_remark") { c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"} c.ServeJSON() return } System.Add_UserLogs_T(User_r.T_uuid, "分类设备管理", "修改", r) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() return } // 删除- func (c *DeviceClassController) List_Del() { // 验证登录 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 } Id, err := c.GetInt("Id") if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } if r, is := Device.Read_DeviceClassList_ById(Id); is { _, is = Device.Read_DeviceClass_ById(r.T_class) if !is { c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class 错误!"} c.ServeJSON() return } if !Device.Delete_DeviceClassList_(r) { c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"} c.ServeJSON() return } System.Add_UserLogs_T(User_r.T_uuid, "分类设备管理", "删除", r) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"} c.ServeJSON() return } // 添加设备列表。模板下载 func (c *DeviceClassController) List_Template_Download() { // 返回生成的 Excel 文件 c.Ctx.Output.Download("ofile/添加设备列表模板.xlsx") }