|
@@ -4,9 +4,9 @@ import (
|
|
|
"Cold_Api/Nats/NatsServer"
|
|
|
"Cold_Api/conf"
|
|
|
"Cold_Api/controllers/lib"
|
|
|
+ "Cold_Api/logs"
|
|
|
"Cold_Api/models/Account"
|
|
|
"Cold_Api/models/Device"
|
|
|
- "Cold_Api/models/RawSql"
|
|
|
"fmt"
|
|
|
beego "github.com/beego/beego/v2/server/web"
|
|
|
"github.com/signintech/gopdf"
|
|
@@ -14,7 +14,6 @@ import (
|
|
|
"math"
|
|
|
"os"
|
|
|
"strconv"
|
|
|
- "strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -449,7 +448,7 @@ func (c *DataController) Device_Sensor_Data_PDF() {
|
|
|
Time_end := c.GetString("Time_end")
|
|
|
|
|
|
if len(T_snid) < 10 {
|
|
|
- c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_snid Err!"}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
@@ -490,10 +489,12 @@ func (c *DataController) Device_Sensor_Data_PDF() {
|
|
|
//use path
|
|
|
//pdf.Image("logo.png", 100, 50, &gopdf.Rect{W: 50, H: 50})
|
|
|
|
|
|
- textw, _ := pdf.MeasureTextWidth(c.Admin_r.T_name)
|
|
|
+ company, _ := Account.Read_Company_ById(c.T_pid)
|
|
|
+
|
|
|
+ textw, _ := pdf.MeasureTextWidth(company.T_name)
|
|
|
pdf.SetX((595 / 2) - (textw / 2))
|
|
|
pdf.SetY(40)
|
|
|
- pdf.Text(c.Admin_r.T_name)
|
|
|
+ pdf.Text(company.T_name)
|
|
|
|
|
|
// 线
|
|
|
pdf.SetLineWidth(2)
|
|
@@ -594,50 +595,211 @@ func (c *DataController) Device_Sensor_Data_PDF() {
|
|
|
|
|
|
}
|
|
|
|
|
|
-// 大数据平台
|
|
|
-func (c *DataController) Raw() {
|
|
|
- admin_r := c.Admin_r
|
|
|
-
|
|
|
- T_SQL := c.GetString("T_SQL")
|
|
|
-
|
|
|
- T_SQL_ := strings.ToLower(T_SQL)
|
|
|
- if strings.Contains(T_SQL_, ";") ||
|
|
|
- //strings.Contains(T_SQL, "Admin")||
|
|
|
- //strings.Contains(T_SQL, "Device ")||
|
|
|
- //strings.Contains(T_SQL, "DeviceParameter")||
|
|
|
- //strings.Contains(T_SQL, "DeviceSensor")||
|
|
|
- //strings.Contains(T_SQL, "DeviceSnOld")||
|
|
|
- //strings.Contains(T_SQL, "DeviceTask")||
|
|
|
- //strings.Contains(T_SQL, "DeviceWarning")||
|
|
|
- strings.Contains(T_SQL, "Logs") ||
|
|
|
- strings.Contains(T_SQL, "SqlLogs") ||
|
|
|
- strings.Contains(T_SQL, "Tokey") ||
|
|
|
- strings.Contains(T_SQL, "UserLogs") ||
|
|
|
- strings.Contains(T_SQL_, "show") ||
|
|
|
- strings.Contains(T_SQL_, "create") ||
|
|
|
- strings.Contains(T_SQL_, "drop") ||
|
|
|
- strings.Contains(T_SQL_, "desc") ||
|
|
|
- strings.Contains(T_SQL_, "alter") ||
|
|
|
- strings.Contains(T_SQL_, "insert") ||
|
|
|
- strings.Contains(T_SQL_, "update") ||
|
|
|
- strings.Contains(T_SQL_, "delete") {
|
|
|
- RawSql.Add_SqlLogs(admin_r.T_uuid, "Err:"+admin_r.T_user, T_SQL)
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "Err SQL!", Data: admin_r.T_name + " :你的行为 也被记录"}
|
|
|
+// 数据备份
|
|
|
+func (c *DataController) Device_Sensor_Data_BackUp() {
|
|
|
+ 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_snid := c.GetString("T_snid")
|
|
|
+ Time_start := c.GetString("Time_start")
|
|
|
+ Time_end := c.GetString("Time_end")
|
|
|
+
|
|
|
+ if len(T_snid) < 10 {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_snid Err!"}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if _, is := lib.DateStrToDate(Time_start); !is {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if _, is := lib.DateStrToDate(Time_end); !is {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ Time_start += " 00:00:00"
|
|
|
+ Time_end += " 23:59:59"
|
|
|
+
|
|
|
+ var r_jsons lib.R_JSONS
|
|
|
+
|
|
|
+ r_jsons.Data, r_jsons.Num = Device.Read_DeviceData_BackUp_List(T_snid, 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)))
|
|
|
+
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 数据备份pdf
|
|
|
+func (c *DataController) Device_Sensor_Data_BackUp_PDF() {
|
|
|
+ T_sn := c.GetString("T_sn")
|
|
|
+ T_id, _ := c.GetInt("T_id")
|
|
|
+ T_date := c.GetString("T_date")
|
|
|
+
|
|
|
+ T_snid := fmt.Sprintf("%s,%d", T_sn, T_id)
|
|
|
+
|
|
|
+ date, is := lib.DateStrToDate(T_date)
|
|
|
+ if !is {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ Time_start := T_date + " 00:00:00"
|
|
|
+ Time_end := T_date + " 23:59:59"
|
|
|
+
|
|
|
+ var DeviceSensor_data []Device.DeviceData_R
|
|
|
+
|
|
|
+ DeviceSensor_data, _ = Device.Read_DeviceData_By_T_snid_List(T_snid, Time_start, Time_end, 0, 9999)
|
|
|
+
|
|
|
+ var err error
|
|
|
+ pdf := &gopdf.GoPdf{}
|
|
|
+ pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) //595.28, 841.89 = A4
|
|
|
+ //err = GetFont(pdf, "LiberationSerif-Regular.ttf")
|
|
|
+ //if err != nil {
|
|
|
+ // log.Fatalln(err)
|
|
|
+ //}
|
|
|
+ //err = pdf.SetFont("Ubuntu-L", "", 14)
|
|
|
+ //if err != nil {
|
|
|
+ // log.Fatalln(err)
|
|
|
+ //}
|
|
|
+
|
|
|
+ err = pdf.AddTTFFont("simsun", "static/fonts/三极行楷简体-粗.ttf")
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 204, Msg: "ok!", Data: err}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = pdf.SetFont("simsun", "", 24)
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 205, Msg: "ok!", Data: err}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ pdf.SetGrayFill(0.5)
|
|
|
+
|
|
|
+ pdf.SetMargins(0, 20, 0, 20)
|
|
|
+ pdf.AddPage()
|
|
|
+
|
|
|
+ //use path
|
|
|
+ //pdf.Image("logo.png", 100, 50, &gopdf.Rect{W: 50, H: 50})
|
|
|
+
|
|
|
+ company, _ := Account.Read_Company_ById(c.T_pid)
|
|
|
+
|
|
|
+ textw, _ := pdf.MeasureTextWidth(company.T_name)
|
|
|
+ pdf.SetX((595 / 2) - (textw / 2))
|
|
|
+ pdf.SetY(40)
|
|
|
+ pdf.Text(company.T_name)
|
|
|
+
|
|
|
+ // 线
|
|
|
+ pdf.SetLineWidth(2)
|
|
|
+ pdf.SetLineType("dashed")
|
|
|
+ pdf.Line(10, 60, 585, 60)
|
|
|
+
|
|
|
+ err = pdf.AddTTFFont("wts", "static/fonts/MiSans-Medium.ttf")
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 206, Msg: "ok!", Data: err}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
+ err = pdf.SetFont("wts", "", 12)
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //fmt.Sprintf(" %.1f ", v.T_t)
|
|
|
+ lib.RectFillColor(pdf, "历史数据["+Time_start+" / "+Time_end+"]", 14, 22, 80, 550, 40, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
|
|
|
- if //!strings.Contains(T_SQL, "z_device_data_") ||
|
|
|
- !strings.Contains(T_SQL_, "select") {
|
|
|
- RawSql.Add_SqlLogs(admin_r.T_uuid, "Err:"+admin_r.T_user, T_SQL)
|
|
|
- c.Data["json"] = lib.JSONS{Code: 201, Msg: "Err SQL!", Data: admin_r.T_name + " :你的行为 也被记录"}
|
|
|
+ lib.RectFillColor(pdf, "序号", 12, 22, 120, 30, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+ lib.RectFillColor(pdf, "传感器名称", 12, 52, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+ lib.RectFillColor(pdf, "温度℃", 12, 152, 120, 60, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+
|
|
|
+ lib.RectFillColor(pdf, "湿度%", 12, 212, 120, 60, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+
|
|
|
+ lib.RectFillColor(pdf, "温度范围", 12, 272, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+ lib.RectFillColor(pdf, "湿度范围", 12, 362, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+ lib.RectFillColor(pdf, "记录时间", 12, 452, 120, 120, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+
|
|
|
+ var y float64 = 140
|
|
|
+
|
|
|
+ err = pdf.SetFont("wts", "", 10)
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|
|
|
+ for i, v := range DeviceSensor_data {
|
|
|
+ text := fmt.Sprintf(" %d ", i+1)
|
|
|
+ var textH float64 = 25 // if text height is 25px.
|
|
|
+ pdf.SetNewY(y, textH)
|
|
|
+ y = pdf.GetY()
|
|
|
+ //pdf.SetX(x) // must after pdf.SetNewY() called.
|
|
|
+ //err = pdf.Text(text)
|
|
|
+ //if err != nil {
|
|
|
+ // log.Fatalln(err)
|
|
|
+ //}
|
|
|
+
|
|
|
+ T_t := fmt.Sprintf(" %.1f ", v.T_t)
|
|
|
+ T_rh := fmt.Sprintf(" %.1f ", v.T_rh)
|
|
|
+ T_Tlu := fmt.Sprintf(" %.1f ~ %.1f ", v.T_tl, v.T_tu)
|
|
|
+ T_Rlu := fmt.Sprintf(" %.1f ~ %.1f ", v.T_rhl, v.T_rhu)
|
|
|
+ T_time := fmt.Sprintf("%s", v.T_time)
|
|
|
+ //if user_r.Admin_rh == 0 && strings.Contains(v.T_sn, "YD") {
|
|
|
+ // T_rh = "-"
|
|
|
+ // T_Rlu = "-"
|
|
|
+ //}
|
|
|
+
|
|
|
+ lib.RectFillColor(pdf, text, 10, 22, y, 30, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+ lib.RectFillColor(pdf, v.T_name, 10, 52, y, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+ lib.RectFillColor(pdf, T_t, 10, 152, y, 60, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+ lib.RectFillColor(pdf, T_rh, 10, 212, y, 60, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+
|
|
|
+ lib.RectFillColor(pdf, T_Tlu, 10, 272, y, 90, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+
|
|
|
+ lib.RectFillColor(pdf, T_Rlu, 10, 362, y, 90, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
|
|
|
- RawSql.Add_SqlLogs(admin_r.T_uuid, "ok", T_SQL)
|
|
|
+ lib.RectFillColor(pdf, T_time, 10, 452, y, 120, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
|
|
|
+ y += 20
|
|
|
+ }
|
|
|
|
|
|
- c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Device.Read_SqlRaw(T_SQL)}
|
|
|
+ deviceSensor, _ := Device.Read_DeviceSensor_ByT_sn(T_sn, T_id)
|
|
|
+ filenameStr := fmt.Sprintf("backup/sn/%s_%s_%s.pdf", lib.GetRandstring(8, "0123456789", 0), date.Format("2006_01_02"), deviceSensor.T_name)
|
|
|
+
|
|
|
+ err = pdf.WritePdf(filenameStr)
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传 OSS
|
|
|
+ url, is := NatsServer.Qiniu_UploadFile(lib.GetCurrentDirectory()+"/"+filenameStr, filenameStr)
|
|
|
+ if !is {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //删除目录
|
|
|
+ err = os.Remove(filenameStr)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ }
|
|
|
+
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: url}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
|
}
|