|
|
@@ -1,20 +1,12 @@
|
|
|
package iotDownService
|
|
|
|
|
|
import (
|
|
|
- "IotAdmin/core/sdk/config"
|
|
|
- "IotAdmin/core/tools/writer"
|
|
|
+ iotLog "IotAdmin/iot/log"
|
|
|
iotProtocol "IotAdmin/iot/protocol"
|
|
|
iotElProtocol "IotAdmin/iot/protocol/electric"
|
|
|
iotStruct "IotAdmin/iot/struct"
|
|
|
- "encoding/json"
|
|
|
- "log"
|
|
|
- "strings"
|
|
|
- "time"
|
|
|
)
|
|
|
|
|
|
-func init() {
|
|
|
- mp = make(map[string]*writer.FileWriter)
|
|
|
-}
|
|
|
func reportData(dataArray *[]*iotStruct.CollectData) {
|
|
|
if dataArray == nil || len(*dataArray) == 0 {
|
|
|
return
|
|
|
@@ -34,62 +26,8 @@ func reportData(dataArray *[]*iotStruct.CollectData) {
|
|
|
go func(d *iotStruct.CollectData, cfg *iotStruct.ReportConfig) {
|
|
|
reportHandler.Adapter(d)
|
|
|
str := reportHandler.Report(d, cfg)
|
|
|
- go logReport(d, cfg, str)
|
|
|
+ go iotLog.LogData(d, cfg, str)
|
|
|
}(data, &rc)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-var mp map[string]*writer.FileWriter
|
|
|
-
|
|
|
-func logReport(data *iotStruct.CollectData, cfg *iotStruct.ReportConfig, dataStr *string) {
|
|
|
- output := getWrite(data)
|
|
|
- logData := &iotStruct.LogData{
|
|
|
- Time: time.Now().Format("20060102150400"),
|
|
|
- No: data.SlaveConfig.No,
|
|
|
- Data: *data,
|
|
|
- ReportHost: cfg.Host,
|
|
|
- ReportProtocol: cfg.Protocol,
|
|
|
- ReportMn: cfg.MN,
|
|
|
- ReportUser: cfg.User,
|
|
|
- ReportPwd: cfg.Pwd,
|
|
|
- ReportStr: *dataStr,
|
|
|
- }
|
|
|
- str, err := json.Marshal(logData)
|
|
|
- if err != nil {
|
|
|
- log.Printf("Report Log Marshal error: %s \r\n", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- _, err = output.Write(str)
|
|
|
- if err != nil {
|
|
|
- log.Printf("Report Log Write error: %s \r\n", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- _, err = output.Write([]byte("\r\n"))
|
|
|
-}
|
|
|
-
|
|
|
-func getWrite(data *iotStruct.CollectData) *writer.FileWriter {
|
|
|
- filePath := config.ApplicationConfig.DataLogFile
|
|
|
- if filePath == "" {
|
|
|
- filePath = "./_data/iot/"
|
|
|
- } else if filePath[len(filePath)-1] != '/' {
|
|
|
- filePath += "/"
|
|
|
- }
|
|
|
- filePath += strings.ReplaceAll(data.SlaveConfig.No, "_", "/")
|
|
|
- var output *writer.FileWriter
|
|
|
- var ok bool
|
|
|
- if output, ok = mp[filePath]; !ok {
|
|
|
- var err error
|
|
|
- output, err = writer.NewFileWriter(
|
|
|
- writer.WithPath(filePath),
|
|
|
- // 不切割文件
|
|
|
- writer.WithCap(0),
|
|
|
- writer.WithSuffix(".data"),
|
|
|
- )
|
|
|
- if err != nil {
|
|
|
- log.Printf("Report Log setup error: %s \r\n", err.Error())
|
|
|
- }
|
|
|
- mp[filePath] = output
|
|
|
- }
|
|
|
- return output
|
|
|
-}
|