73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
package main
|
||
|
||
import (
|
||
"ZhenTuLocalPassiveAdapter/api"
|
||
"ZhenTuLocalPassiveAdapter/config"
|
||
"ZhenTuLocalPassiveAdapter/core"
|
||
"ZhenTuLocalPassiveAdapter/dto"
|
||
"log"
|
||
"os"
|
||
"time"
|
||
)
|
||
|
||
func startTask(device config.DeviceMapping, task dto.Task) {
|
||
fo, err := core.HandleTask(device, task)
|
||
if err != nil {
|
||
log.Printf("处理任务失败, TaskID:【%s】, DeviceNo: %s, 错误: %v\n", task.TaskID, task.DeviceNo, err)
|
||
api.ReportTaskFailure(task.TaskID)
|
||
return
|
||
}
|
||
log.Printf("处理任务成功, TaskID:【%s】, DeviceNo: %s\n", task.TaskID, task.DeviceNo)
|
||
err = api.UploadTaskFile(task, *fo)
|
||
if err != nil {
|
||
log.Printf("上传文件失败, TaskID:【%s】, DeviceNo: %s, 错误: %v\n", task.TaskID, task.DeviceNo, err)
|
||
api.ReportTaskFailure(task.TaskID)
|
||
return
|
||
}
|
||
log.Printf("上传文件成功, TaskID:【%s】, DeviceNo: %s\n", task.TaskID, task.DeviceNo)
|
||
api.ReportTaskSuccess(task.TaskID, fo)
|
||
}
|
||
|
||
func main() {
|
||
err := config.LoadConfig()
|
||
if err != nil {
|
||
log.Println("加载配置文件失败:", err)
|
||
return
|
||
}
|
||
// 日志文件路径
|
||
logFilePath := "app.log"
|
||
|
||
// 创建或打开日志文件
|
||
logFile, err := os.OpenFile(logFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
||
if err != nil {
|
||
log.Fatalf("Failed to open log file: %v", err)
|
||
}
|
||
defer logFile.Close()
|
||
|
||
// 设置日志输出到文件
|
||
log.SetOutput(logFile)
|
||
// 每两秒定时执行
|
||
for {
|
||
// 执行任务
|
||
tasks, err := api.SyncTask()
|
||
if err == nil {
|
||
for _, task := range tasks {
|
||
log.Printf("开始处理任务, TaskID:【%s】,DeviceNo: %s,开始时间: %s,结束时间: %s\n", task.TaskID, task.DeviceNo, task.StartTime, task.EndTime)
|
||
// 处理任务
|
||
for _, device := range config.Config.Devices {
|
||
if device.DeviceNo == task.DeviceNo {
|
||
// 处理任务
|
||
go startTask(device, task)
|
||
break // 提前返回,避免不必要的循环
|
||
}
|
||
}
|
||
log.Printf("处理任务结束, TaskID:【%s】,DeviceNo: %s\n", task.TaskID, task.DeviceNo)
|
||
}
|
||
} else {
|
||
log.Println("同步任务失败:", err)
|
||
}
|
||
// 等待两秒
|
||
<-time.After(2 * time.Second)
|
||
}
|
||
}
|