package controllers import ( "bzd_server/conf" "bzd_server/lib" "bzd_server/logs" "bzd_server/models/System" "bzd_server/models/Task" "fmt" beego "github.com/beego/beego/v2/server/web" "github.com/xuri/excelize/v2" "math" "os" "strconv" "strings" "time" ) type TaskDataController struct { beego.Controller } // 列表 - func (c *TaskDataController) TaskData_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 } Time_start := c.GetString("Time_start") Time_end := c.GetString("Time_end") T_sn := c.GetString("T_sn") T_id, err := c.GetInt("T_id") if err != nil { T_id = -1 } 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 } var cnt int64 List, cnt := Task.Read_TaskData_ById_List(Task_r.T_task_id, T_sn, T_id, Time_start, Time_end, 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 *TaskDataController) TaskDataClass_List() { 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 } List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: List} c.ServeJSON() return } // 添加- func (c *TaskDataController) TaskData_AddS() { // 获取登录用户的uuid T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 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_T(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() { // 获取登录用户的uuid T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) T_sn := c.GetString("T_sn") T_id, _ := c.GetInt("T_id") T_t, _ := c.GetFloat("T_t") T_rh, _ := c.GetFloat("T_rh") T_time := c.GetString("T_time") 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.Add_TaskData(Task_r.T_task_id, T_sn, strconv.Itoa(T_id), fmt.Sprintf("%.2f", T_t), fmt.Sprintf("%.2f", T_rh), T_time) if !is { c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"} c.ServeJSON() return } System.Add_UserLogs_T(T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"|"+T_sn+"|"+strconv.Itoa(T_id)+"|"+fmt.Sprintf("%.2f", T_t)+"|"+fmt.Sprintf("%.2f", T_rh)+T_time) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() return } // 修改- func (c *TaskDataController) TaskData_Up() { // 获取登录用户的uuid T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) Id, err := c.GetInt("Id") if err != nil { c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"} c.ServeJSON() return } T_t, err := c.GetFloat("T_t") if err != nil { c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_t 错误!"} c.ServeJSON() return } T_rh, err := c.GetFloat("T_rh") if err != nil { c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_rh 错误!"} c.ServeJSON() return } T_time := c.GetString("T_time") 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.Up_TaskData(Task_r.T_task_id, strconv.Itoa(Id), fmt.Sprintf("%.2f", T_t), fmt.Sprintf("%.2f", T_rh), T_time) if !is { c.Data["json"] = lib.JSONS{Code: 301, Msg: "修改失败!"} c.ServeJSON() return } System.Add_UserLogs_T(T_uuid, "任务数据", "修改数据"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id)+"|"+fmt.Sprintf("%.2f", T_t)+"|"+fmt.Sprintf("%.2f", T_rh)+T_time) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() return } // 删除- func (c *TaskDataController) TaskData_Del() { // 获取登录用户的uuid T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 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(Task_r.T_task_id, strconv.Itoa(Id)) if !is { c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"} c.ServeJSON() return } System.Add_UserLogs_T(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) TaskData_Del_t_id() { // 获取登录用户的uuid T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 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_T(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() { Time_start := c.GetString("Time_start") Time_end := c.GetString("Time_end") T_sn_str := c.GetString("T_sn_list") //865901058809339,865901058815849,865901058818991,865901058810568 //T_id, err := c.GetInt("T_id") //if err != nil { // T_id = -1 // //} 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_list := strings.Split(T_sn_str, ",") DeviceSensor_data_list := []Task.TaskData_{} for _, v := range T_sn_list { DeviceSensor_data, _ := Task.Read_TaskData_ById_List(Task_r.T_task_id, v, -1, Time_start, Time_end, 1, 9999) DeviceSensor_data_list = append(DeviceSensor_data_list, DeviceSensor_data...) } f := excelize.NewFile() // 设置单元格的值 // 这里设置表头 f.SetCellValue("Sheet1", "A1", "编号") f.SetCellValue("Sheet1", "B1", "SN") f.SetCellValue("Sheet1", "C1", "温度℃") f.SetCellValue("Sheet1", "D1", "湿度%") f.SetCellValue("Sheet1", "E1", "记录时间") // 设置列宽 f.SetColWidth("Sheet1", "A", "A", 7) f.SetColWidth("Sheet1", "B", "B", 20) f.SetColWidth("Sheet1", "C", "C", 10) f.SetColWidth("Sheet1", "D", "D", 10) f.SetColWidth("Sheet1", "E", "E", 22) line := 1 // 循环写入数据 for _, v := range DeviceSensor_data_list { line++ f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), v.T_id) f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_sn) f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), strconv.FormatFloat(float64(v.T_t), 'f', 1, 64)) f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), strconv.FormatFloat(float64(v.T_rh), 'f', 1, 64)) f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_time) } fmt.Println("DeviceSensor_data:", len(DeviceSensor_data_list)) timeStr := time.Now().Format("20060102150405") // 保存文件 if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil { fmt.Println(err) } if !lib.Pload_qiniu("ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx") { c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"} c.ServeJSON() return } //删除目录 //err = os.Remove("ofile/" + timeStr + ".xlsx") //if err != nil { // fmt.Println(err) //} c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: "https://bzdcoldverifyoss.baozhida.cn/" + "ofile/" + timeStr + ".xlsx"} c.ServeJSON() return } // 打包数据本地数据 func (c *TaskDataController) TaskData_Import_TaskData() { // 获取登录用户的uuid T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) T_task_id := c.GetString("T_task_id") _, is := Task.Read_Task(T_task_id) if !is { c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"} c.ServeJSON() return } sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Path, T_task_id) org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线上数据导出失败!"} c.ServeJSON() return } System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据", "导出线上数据Z_TaskData_"+T_task_id, org) i := 0 flag := false Task.CREATE_TaskData(conf.Local_AliasName, T_task_id) for i < 10 { Task.Truncate_TaskData(conf.Local_AliasName, T_task_id) org, err := Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file) if err != nil { logs.Println("任务数据-打包本地数据", "线下导入数据Z_TaskData_"+T_task_id, err.Error()) } else { if Task.Check_TaskData_Num(T_task_id) { System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据", "线下导入数据Z_TaskData_"+T_task_id, org) flag = true break } } i++ } // 重试10次后仍然没有成功导入数据 if !flag { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线下导入数据失败!"} c.ServeJSON() return } //删除导出的sql文件 _ = os.Remove(sql_file) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() } // 更新线上数据 func (c *TaskDataController) TaskData_Up_TaskData() { // 获取登录用户的uuid T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey")) 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: 202, Msg: "T_task_id 错误!"} c.ServeJSON() return } sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Path, T_task_id) org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file) if err != nil { logs.Println(T_uuid, "任务数据-更新线上数据", "导出线下数据Z_TaskData_"+T_task_id, err.Error()) c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线下数据导出失败!"} c.ServeJSON() return } System.Add_UserLogs_T(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, org) i := 0 flag := false for i < 10 { Task.Truncate_TaskData(conf.Server_AliasName, T_task_id) org, err = Task.Insert_TaskData(conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file) if err != nil { logs.Println(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, err.Error()) } else { if Task.Check_TaskData_Num(T_task_id) { System.Add_UserLogs_T(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, org) flag = true break } } i++ } // 重试10次后仍然没有成功导入数据 if !flag { c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线上导入数据失败!"} c.ServeJSON() return } //删除导出的sql文件 _ = os.Remove(sql_file) // 提交后将当前任务 报告编写 标志为 1 Task_r.T_delivery_state = 1 if !Task.Update_Task(Task_r, "T_delivery_state") { c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"} c.ServeJSON() return } // 向线上用户日志表写入数据 System.Add_UserLogs_T(T_uuid, "任务", "修改", Task_r) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"} c.ServeJSON() }