|
@@ -499,6 +499,25 @@ func (c *TaskDataController) TaskDataClass_List() {
|
|
|
|
|
|
List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
|
|
|
|
|
|
+ dcList, err := NatsServer.Device_Class_List(T_task_id)
|
|
|
+ if err != nil {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 202, Msg: "获取设备列表失败!"}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 保存布局编号和校准证书对应关系
|
|
|
+ var deviceCertificateMap = make(map[string]int) // t_id, T_Certificate_sn
|
|
|
+ for _, v := range dcList {
|
|
|
+ deviceCertificateMap[v.T_id] = v.T_terminal
|
|
|
+ }
|
|
|
+
|
|
|
+ for i := 0; i < len(List); i++ {
|
|
|
+ if terminal, ok := deviceCertificateMap[List[i].T_id]; ok {
|
|
|
+ List[i].T_terminal = terminal
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: List}
|
|
|
c.ServeJSON()
|
|
|
return
|
|
@@ -2910,6 +2929,10 @@ func (c *TaskDataController) ListJson() {
|
|
|
"空载测试结束风机停止时间",
|
|
|
"满载第一次关门温度恢复时间",
|
|
|
"空载第一次关门温度恢复时间",
|
|
|
+ "满载第二次关门温度恢复时间",
|
|
|
+ "空载第二次关门温度恢复时间",
|
|
|
+ "满载第三次关门温度恢复时间",
|
|
|
+ "空载第三次关门温度恢复时间",
|
|
|
"满载开门最长需要多少分钟恢复",
|
|
|
"空载开门最长需要多少分钟恢复",
|
|
|
"冷藏库作业口外部环境分割线最低温",
|
|
@@ -2938,6 +2961,13 @@ func (c *TaskDataController) ListJson() {
|
|
|
"监测系统配置的测点终端参数及安装位置确认(空载)结束时间",
|
|
|
"培训讲师",
|
|
|
"培训时间",
|
|
|
+ "作业出入口总测点",
|
|
|
+ "风机布点总测点",
|
|
|
+ "库内除风机出风口、回风口外总测点",
|
|
|
+ "库内除风机出风口、回风口、特殊位置布点、作业口外总测点",
|
|
|
+ "车内除风机出风口、回风口外总测点",
|
|
|
+ "预冷开始时间",
|
|
|
+ "预冷结束时间",
|
|
|
}
|
|
|
|
|
|
c.Data["json"] = mySlice
|
|
@@ -2983,7 +3013,11 @@ func (c *TaskDataController) A满载测试结束风机停止时间() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 均匀性布点, 开始时间, 结束时间)
|
|
|
+ // 获取数据波动最大的三条
|
|
|
+ initialData, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, 均匀性布点, "", 开始时间, 结束时间, 0, 9999)
|
|
|
+ snList := Task.GetTopThreeWithTheGreatestFluctuations(initialData)
|
|
|
+
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, snList, 开始时间, 结束时间)
|
|
|
fmt.Println("list:", list)
|
|
|
CalculateHumps_list := Task.CalculateHumps(list)
|
|
|
|
|
@@ -3044,7 +3078,10 @@ func (c *TaskDataController) A空载测试结束风机停止时间() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 均匀性布点, 开始时间, 结束时间)
|
|
|
+ // 获取数据波动最大的三条
|
|
|
+ initialData, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, 均匀性布点, "", 开始时间, 结束时间, 0, 9999)
|
|
|
+ snList := Task.GetTopThreeWithTheGreatestFluctuations(initialData)
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, snList, 开始时间, 结束时间)
|
|
|
CalculateHumps_list := Task.CalculateHumps(list)
|
|
|
|
|
|
if len(CalculateHumps_list) < 7 {
|
|
@@ -3099,7 +3136,9 @@ func (c *TaskDataController) A满载风机停止时间点() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 均匀性布点, 开始时间, 结束时间)
|
|
|
+ initialData, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, 均匀性布点, "", 开始时间, 结束时间, 0, 9999)
|
|
|
+ snList := Task.GetTopThreeWithTheGreatestFluctuations(initialData)
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, snList, 开始时间, 结束时间)
|
|
|
CalculateHumps_list := Task.CalculateHumps(list)
|
|
|
|
|
|
if len(CalculateHumps_list) == 0 {
|
|
@@ -3154,7 +3193,9 @@ func (c *TaskDataController) A空载风机停止时间点() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 均匀性布点, 开始时间, 结束时间)
|
|
|
+ initialData, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, 均匀性布点, "", 开始时间, 结束时间, 0, 9999)
|
|
|
+ snList := Task.GetTopThreeWithTheGreatestFluctuations(initialData)
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, snList, 开始时间, 结束时间)
|
|
|
CalculateHumps_list := Task.CalculateHumps(list)
|
|
|
|
|
|
if len(CalculateHumps_list) == 0 {
|
|
@@ -3208,7 +3249,9 @@ func (c *TaskDataController) A空载风机启动时间点() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 均匀性布点, 开始时间, 结束时间)
|
|
|
+ initialData, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, 均匀性布点, "", 开始时间, 结束时间, 0, 9999)
|
|
|
+ snList := Task.GetTopThreeWithTheGreatestFluctuations(initialData)
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, snList, 开始时间, 结束时间)
|
|
|
CalculateHumps_list := Task.CalculateHumps(list)
|
|
|
|
|
|
if len(CalculateHumps_list) == 0 {
|
|
@@ -3262,7 +3305,9 @@ func (c *TaskDataController) A满载风机启动时间点() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 均匀性布点, 开始时间, 结束时间)
|
|
|
+ initialData, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, 均匀性布点, "", 开始时间, 结束时间, 0, 9999)
|
|
|
+ snList := Task.GetTopThreeWithTheGreatestFluctuations(initialData)
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, snList, 开始时间, 结束时间)
|
|
|
CalculateHumps_list := Task.CalculateHumps(list)
|
|
|
|
|
|
if len(CalculateHumps_list) == 0 {
|
|
@@ -3544,7 +3589,13 @@ func (c *TaskDataController) A运行确认及偏差处理空载开始时间() {
|
|
|
|
|
|
柜内所有测点 := c.GetString("柜内所有测点") // v26nplogbwt1
|
|
|
if len(柜内所有测点) == 0 {
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点 失败!"})
|
|
|
+ 柜内所有测点 = c.GetString("库内所有测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("车内所有测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜/库/车内所有测点 失败!"})
|
|
|
return
|
|
|
}
|
|
|
温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
@@ -3628,7 +3679,13 @@ func (c *TaskDataController) A运行确认及偏差处理满载开始时间() {
|
|
|
|
|
|
柜内所有测点 := c.GetString("柜内所有测点") // v26nplogbwt1
|
|
|
if len(柜内所有测点) == 0 {
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点 失败!"})
|
|
|
+ 柜内所有测点 = c.GetString("库内所有测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("车内所有测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜/库/车内所有测点 失败!"})
|
|
|
return
|
|
|
}
|
|
|
温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
@@ -3711,7 +3768,13 @@ func (c *TaskDataController) A运行确认及偏差处理空载结束时间() {
|
|
|
|
|
|
柜内所有测点 := c.GetString("柜内所有测点") // v26nplogbwt1
|
|
|
if len(柜内所有测点) == 0 {
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点 失败!"})
|
|
|
+ 柜内所有测点 = c.GetString("库内所有测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("车内所有测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜/库/车内所有测点 失败!"})
|
|
|
return
|
|
|
}
|
|
|
温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
@@ -3775,7 +3838,7 @@ func (c *TaskDataController) A运行确认及偏差处理空载结束时间() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- list2 := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, startTimeData.T_id, startTimeData.T_time, 现场测试结束时间)
|
|
|
+ list2 := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, startTimeData.T_sn, startTimeData.T_time, 现场测试结束时间)
|
|
|
CalculateHumps_list := Task.CalculateHumps(list2)
|
|
|
|
|
|
if len(CalculateHumps_list) < 4 {
|
|
@@ -3817,7 +3880,13 @@ func (c *TaskDataController) A运行确认及偏差处理满载结束时间() {
|
|
|
|
|
|
柜内所有测点 := c.GetString("柜内所有测点") // v26nplogbwt1
|
|
|
if len(柜内所有测点) == 0 {
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点 失败!"})
|
|
|
+ 柜内所有测点 = c.GetString("库内所有测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("车内所有测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜/库/车内所有测点 失败!"})
|
|
|
return
|
|
|
}
|
|
|
温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
@@ -4999,9 +5068,15 @@ func (c *TaskDataController) A满载第一次关门温度恢复时间() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- 柜内所有测点 := c.GetString("柜内所有测点") // v26nplogbwt1
|
|
|
+ 柜内所有测点 := c.GetString("柜内所有测点")
|
|
|
if len(柜内所有测点) == 0 {
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点 失败!"})
|
|
|
+ 柜内所有测点 = c.GetString("均匀性布点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("产品存放区域测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点/均匀性布点/产品存放区域测点 失败!"})
|
|
|
return
|
|
|
}
|
|
|
温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
@@ -5085,9 +5160,15 @@ func (c *TaskDataController) A空载第一次关门温度恢复时间() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- 柜内所有测点 := c.GetString("柜内所有测点") // v26nplogbwt1
|
|
|
+ 柜内所有测点 := c.GetString("柜内所有测点")
|
|
|
if len(柜内所有测点) == 0 {
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点 失败!"})
|
|
|
+ 柜内所有测点 = c.GetString("均匀性布点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("产品存放区域测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点/均匀性布点/产品存放区域测点 失败!"})
|
|
|
return
|
|
|
}
|
|
|
温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
@@ -5157,6 +5238,382 @@ func (c *TaskDataController) A空载第一次关门温度恢复时间() {
|
|
|
c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
}
|
|
|
|
|
|
+func (c *TaskDataController) A满载第二次关门温度恢复时间() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ Task_r, err := Task.Read_Task(T_task_id)
|
|
|
+ if err != nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取任务信息失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ 柜内所有测点 := c.GetString("柜内所有测点")
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("均匀性布点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("产品存放区域测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点/均匀性布点/产品存放区域测点 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
|
+ if len(温度控制范围最高值_) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 温度控制范围最高值 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值 := lib.To_float32(温度控制范围最高值_)
|
|
|
+
|
|
|
+ 第二次开门结束时间 := c.GetString("第二次开门结束时间") // v26nplogbwt1
|
|
|
+ if len(第二次开门结束时间) == 0 || 第二次开门结束时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 第二次开门结束时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 第三次开门开始时间 := c.GetString("第三次开门开始时间") // v26nplogbwt1
|
|
|
+ if len(第三次开门开始时间) == 0 || 第三次开门开始时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 第三次开门开始时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 第二次开门结束时间_a, _ := time.Parse("2006-01-02 15:04", 第二次开门结束时间)
|
|
|
+ 第三次开门开始时间_a, _ := time.Parse("2006-01-02 15:04", 第三次开门开始时间)
|
|
|
+
|
|
|
+ maps_Time_Min_Max_GROUP := Task.Read_TaskData_T_Min_Max_Time_Min_Max_ListGROUP(Task_r.T_task_id, 柜内所有测点, 第二次开门结束时间_a.Format("2006-01-02 15:04:05"), 第三次开门开始时间_a.Format("2006-01-02 15:04:05"))
|
|
|
+
|
|
|
+ if maps_Time_Min_Max_GROUP == nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 柜内所有测点 最大最小值 数据 !"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断拐点
|
|
|
+ if maps_Time_Min_Max_GROUP[0].T_max <= maps_Time_Min_Max_GROUP[1].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[1].T_max >= maps_Time_Min_Max_GROUP[2].T_max {
|
|
|
+
|
|
|
+ if maps_Time_Min_Max_GROUP[1].T_max > 温度控制范围最高值 {
|
|
|
+ // 情况1:开门有超标的情况:
|
|
|
+ // 柜内所有测点中任意一条数据出现超温度控制范围最高值后所有验证工具下降至温度控制范围最高值减0.5℃此时的时间
|
|
|
+ for _, group := range maps_Time_Min_Max_GROUP {
|
|
|
+ if group.T_max < 温度控制范围最高值 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: group.T_times})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 下降至温度控制范围最高值减0.5℃此时的时间 !"})
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ // 情况2:开门无超标的情况:
|
|
|
+ // 柜内所有测点中温度持续下降连续5分钟内,取第一条时间作为此时间点
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 柜内所有测点, maps_Time_Min_Max_GROUP[1].T_times, 第二次开门结束时间_a.Add(time.Minute*30).Format("2006-01-02 15:04:05"))
|
|
|
+
|
|
|
+ for i := 0; i < len(list)-6; i++ {
|
|
|
+ if maps_Time_Min_Max_GROUP[i].T_max <= maps_Time_Min_Max_GROUP[i+1].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+1].T_max >= maps_Time_Min_Max_GROUP[i+2].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+2].T_max >= maps_Time_Min_Max_GROUP[i+3].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+3].T_max >= maps_Time_Min_Max_GROUP[i+4].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+4].T_max >= maps_Time_Min_Max_GROUP[i+5].T_max {
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: maps_Time_Min_Max_GROUP[i].T_times})
|
|
|
+ return
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 温度持续下降连续5分钟 !"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到数据拐点 !"})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+func (c *TaskDataController) A空载第二次关门温度恢复时间() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ Task_r, err := Task.Read_Task(T_task_id)
|
|
|
+ if err != nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取任务信息失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ 柜内所有测点 := c.GetString("柜内所有测点")
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("均匀性布点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("产品存放区域测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点/均匀性布点/产品存放区域测点 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
|
+ if len(温度控制范围最高值_) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 温度控制范围最高值 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值 := lib.To_float32(温度控制范围最高值_)
|
|
|
+
|
|
|
+ 第二次开门结束时间 := c.GetString("第二次开门结束时间") // v26nplogbwt1
|
|
|
+ if len(第二次开门结束时间) == 0 || 第二次开门结束时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 第二次开门结束时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 第三次开门开始时间 := c.GetString("第三次开门开始时间") // v26nplogbwt1
|
|
|
+ if len(第三次开门开始时间) == 0 || 第三次开门开始时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 第三次开门开始时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 第二次开门结束时间_a, _ := time.Parse("2006-01-02 15:04", 第二次开门结束时间)
|
|
|
+ 第三次开门开始时间_a, _ := time.Parse("2006-01-02 15:04", 第三次开门开始时间)
|
|
|
+
|
|
|
+ maps_Time_Min_Max_GROUP := Task.Read_TaskData_T_Min_Max_Time_Min_Max_ListGROUP(Task_r.T_task_id, 柜内所有测点, 第二次开门结束时间_a.Format("2006-01-02 15:04:05"), 第三次开门开始时间_a.Format("2006-01-02 15:04:05"))
|
|
|
+ if maps_Time_Min_Max_GROUP == nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 柜内所有测点 最大最小值 数据 !"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 判断拐点
|
|
|
+ if maps_Time_Min_Max_GROUP[0].T_max <= maps_Time_Min_Max_GROUP[1].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[1].T_max >= maps_Time_Min_Max_GROUP[2].T_max {
|
|
|
+
|
|
|
+ if maps_Time_Min_Max_GROUP[1].T_max > 温度控制范围最高值 {
|
|
|
+ // 情况1:开门有超标的情况:
|
|
|
+ // 柜内所有测点中任意一条数据出现超温度控制范围最高值后所有验证工具下降至温度控制范围最高值减0.5℃此时的时间
|
|
|
+ for _, group := range maps_Time_Min_Max_GROUP {
|
|
|
+ if group.T_max < 温度控制范围最高值 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: group.T_times})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 下降至温度控制范围最高值减0.5℃此时的时间 !"})
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ // 情况2:开门无超标的情况:
|
|
|
+ // 柜内所有测点中温度持续下降连续5分钟内,取第一条时间作为此时间点
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 柜内所有测点, maps_Time_Min_Max_GROUP[1].T_times, 第二次开门结束时间_a.Add(time.Minute*30).Format("2006-01-02 15:04:05"))
|
|
|
+
|
|
|
+ for i := 0; i < len(list)-6; i++ {
|
|
|
+ if maps_Time_Min_Max_GROUP[i].T_max <= maps_Time_Min_Max_GROUP[i+1].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+1].T_max >= maps_Time_Min_Max_GROUP[i+2].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+2].T_max >= maps_Time_Min_Max_GROUP[i+3].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+3].T_max >= maps_Time_Min_Max_GROUP[i+4].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+4].T_max >= maps_Time_Min_Max_GROUP[i+5].T_max {
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: maps_Time_Min_Max_GROUP[i].T_times})
|
|
|
+ return
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 温度持续下降连续5分钟 !"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到数据拐点 !"})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+
|
|
|
+func (c *TaskDataController) A满载第三次关门温度恢复时间() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ Task_r, err := Task.Read_Task(T_task_id)
|
|
|
+ if err != nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取任务信息失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ 柜内所有测点 := c.GetString("柜内所有测点")
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("均匀性布点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("产品存放区域测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点/均匀性布点/产品存放区域测点 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
|
+ if len(温度控制范围最高值_) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 温度控制范围最高值 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值 := lib.To_float32(温度控制范围最高值_)
|
|
|
+
|
|
|
+ 第三次开门结束时间 := c.GetString("第三次开门结束时间") // v26nplogbwt1
|
|
|
+ if len(第三次开门结束时间) == 0 || 第三次开门结束时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 第三次开门结束时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 现场测试结束时间 := c.GetString("现场测试结束时间") // v26nplogbwt1
|
|
|
+ if len(现场测试结束时间) == 0 || 现场测试结束时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 现场测试结束时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 第三次开门结束时间_a, _ := time.Parse("2006-01-02 15:04", 第三次开门结束时间)
|
|
|
+ 现场测试结束时间_a, _ := time.Parse("2006-01-02 15:04", 现场测试结束时间)
|
|
|
+
|
|
|
+ maps_Time_Min_Max_GROUP := Task.Read_TaskData_T_Min_Max_Time_Min_Max_ListGROUP(Task_r.T_task_id, 柜内所有测点, 第三次开门结束时间_a.Format("2006-01-02 15:04:05"), 现场测试结束时间_a.Format("2006-01-02 15:04:05"))
|
|
|
+ if maps_Time_Min_Max_GROUP == nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 柜内所有测点 最大最小值 数据 !"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 判断拐点
|
|
|
+ if maps_Time_Min_Max_GROUP[0].T_max <= maps_Time_Min_Max_GROUP[1].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[1].T_max >= maps_Time_Min_Max_GROUP[2].T_max {
|
|
|
+
|
|
|
+ if maps_Time_Min_Max_GROUP[1].T_max > 温度控制范围最高值 {
|
|
|
+ // 情况1:开门有超标的情况:
|
|
|
+ // 柜内所有测点中任意一条数据出现超温度控制范围最高值后所有验证工具下降至温度控制范围最高值减0.5℃此时的时间
|
|
|
+ for _, group := range maps_Time_Min_Max_GROUP {
|
|
|
+ if group.T_max < 温度控制范围最高值 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: group.T_times})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 下降至温度控制范围最高值减0.5℃此时的时间 !"})
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ // 情况2:开门无超标的情况:
|
|
|
+ // 柜内所有测点中温度持续下降连续5分钟内,取第一条时间作为此时间点
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 柜内所有测点, maps_Time_Min_Max_GROUP[1].T_times, 第三次开门结束时间_a.Add(time.Minute*30).Format("2006-01-02 15:04:05"))
|
|
|
+
|
|
|
+ for i := 0; i < len(list)-6; i++ {
|
|
|
+ if maps_Time_Min_Max_GROUP[i].T_max <= maps_Time_Min_Max_GROUP[i+1].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+1].T_max >= maps_Time_Min_Max_GROUP[i+2].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+2].T_max >= maps_Time_Min_Max_GROUP[i+3].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+3].T_max >= maps_Time_Min_Max_GROUP[i+4].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+4].T_max >= maps_Time_Min_Max_GROUP[i+5].T_max {
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: maps_Time_Min_Max_GROUP[i].T_times})
|
|
|
+ return
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 温度持续下降连续5分钟 !"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到数据拐点 !"})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+func (c *TaskDataController) A空载第三次关门温度恢复时间() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ Task_r, err := Task.Read_Task(T_task_id)
|
|
|
+ if err != nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取任务信息失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ 柜内所有测点 := c.GetString("柜内所有测点")
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("均匀性布点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ 柜内所有测点 = c.GetString("产品存放区域测点")
|
|
|
+ }
|
|
|
+ if len(柜内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点/均匀性布点/产品存放区域测点 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
|
+ if len(温度控制范围最高值_) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 温度控制范围最高值 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值 := lib.To_float32(温度控制范围最高值_)
|
|
|
+
|
|
|
+ 第三次开门结束时间 := c.GetString("第三次开门结束时间") // v26nplogbwt1
|
|
|
+ if len(第三次开门结束时间) == 0 || 第三次开门结束时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 第三次开门结束时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 现场测试结束时间 := c.GetString("现场测试结束时间") // v26nplogbwt1
|
|
|
+ if len(现场测试结束时间) == 0 || 现场测试结束时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 现场测试结束时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 第三次开门结束时间_a, _ := time.Parse("2006-01-02 15:04", 第三次开门结束时间)
|
|
|
+ 现场测试结束时间_a, _ := time.Parse("2006-01-02 15:04", 现场测试结束时间)
|
|
|
+
|
|
|
+ maps_Time_Min_Max_GROUP := Task.Read_TaskData_T_Min_Max_Time_Min_Max_ListGROUP(Task_r.T_task_id, 柜内所有测点, 第三次开门结束时间_a.Format("2006-01-02 15:04:05"), 现场测试结束时间_a.Format("2006-01-02 15:04:05"))
|
|
|
+ if maps_Time_Min_Max_GROUP == nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 柜内所有测点 最大最小值 数据 !"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 判断拐点
|
|
|
+ if maps_Time_Min_Max_GROUP[0].T_max <= maps_Time_Min_Max_GROUP[1].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[1].T_max >= maps_Time_Min_Max_GROUP[2].T_max {
|
|
|
+
|
|
|
+ if maps_Time_Min_Max_GROUP[1].T_max > 温度控制范围最高值 {
|
|
|
+ // 情况1:开门有超标的情况:
|
|
|
+ // 柜内所有测点中任意一条数据出现超温度控制范围最高值后所有验证工具下降至温度控制范围最高值减0.5℃此时的时间
|
|
|
+ for _, group := range maps_Time_Min_Max_GROUP {
|
|
|
+ if group.T_max < 温度控制范围最高值 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: group.T_times})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 下降至温度控制范围最高值减0.5℃此时的时间 !"})
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ // 情况2:开门无超标的情况:
|
|
|
+ // 柜内所有测点中温度持续下降连续5分钟内,取第一条时间作为此时间点
|
|
|
+ list := Task.Read_TaskData_ById_AVG(Task_r.T_task_id, 柜内所有测点, maps_Time_Min_Max_GROUP[1].T_times, 第三次开门结束时间_a.Add(time.Minute*30).Format("2006-01-02 15:04:05"))
|
|
|
+
|
|
|
+ for i := 0; i < len(list)-6; i++ {
|
|
|
+ if maps_Time_Min_Max_GROUP[i].T_max <= maps_Time_Min_Max_GROUP[i+1].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+1].T_max >= maps_Time_Min_Max_GROUP[i+2].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+2].T_max >= maps_Time_Min_Max_GROUP[i+3].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+3].T_max >= maps_Time_Min_Max_GROUP[i+4].T_max &&
|
|
|
+ maps_Time_Min_Max_GROUP[i+4].T_max >= maps_Time_Min_Max_GROUP[i+5].T_max {
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: maps_Time_Min_Max_GROUP[i].T_times})
|
|
|
+ return
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到 温度持续下降连续5分钟 !"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没找到数据拐点 !"})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+
|
|
|
func (c *TaskDataController) A满载开门最长需要多少分钟恢复() {
|
|
|
|
|
|
T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
@@ -5226,9 +5683,9 @@ func (c *TaskDataController) A冷藏库作业口外部环境分割线最低温()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- 作业口外部测点 := c.GetString("作业口外部测点") // v26nplogbwt1
|
|
|
- if len(作业口外部测点) == 0 {
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 作业口外部测点 失败!"})
|
|
|
+ 冷藏库作业口外部环境测点 := c.GetString("冷藏库作业口外部环境测点") // v26nplogbwt1
|
|
|
+ if len(冷藏库作业口外部环境测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 冷藏库作业口外部环境测点 失败!"})
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -5243,9 +5700,9 @@ func (c *TaskDataController) A冷藏库作业口外部环境分割线最低温()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- minT, _ := Task.Read_TaskData_T_Min_Max(Task_r.T_task_id, 作业口外部测点, "", 现场测试开始时间, 现场测试结束时间)
|
|
|
+ minT, _ := Task.Read_TaskData_T_Min_Max(Task_r.T_task_id, 冷藏库作业口外部环境测点, "", 现场测试开始时间, 现场测试结束时间)
|
|
|
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: fmt.Sprintf("%.1f", math.Ceil(float64(minT*10))/10)})
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: fmt.Sprintf("%.1f", math.Ceil(float64(minT*10))/10-0.5)})
|
|
|
|
|
|
// Close the connection
|
|
|
c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
@@ -5264,9 +5721,9 @@ func (c *TaskDataController) A冷藏库作业口外部环境分割线最高温()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- 作业口外部测点 := c.GetString("作业口外部测点") // v26nplogbwt1
|
|
|
- if len(作业口外部测点) == 0 {
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 作业口外部测点 失败!"})
|
|
|
+ 冷藏库作业口外部环境测点 := c.GetString("冷藏库作业口外部环境测点") // v26nplogbwt1
|
|
|
+ if len(冷藏库作业口外部环境测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 冷藏库作业口外部环境测点 失败!"})
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -5281,9 +5738,9 @@ func (c *TaskDataController) A冷藏库作业口外部环境分割线最高温()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- _, maxT := Task.Read_TaskData_T_Min_Max(Task_r.T_task_id, 作业口外部测点, "", 现场测试开始时间, 现场测试结束时间)
|
|
|
+ _, maxT := Task.Read_TaskData_T_Min_Max(Task_r.T_task_id, 冷藏库作业口外部环境测点, "", 现场测试开始时间, 现场测试结束时间)
|
|
|
|
|
|
- lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: fmt.Sprintf("%.1f", math.Ceil(float64(maxT*10))/10)})
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: fmt.Sprintf("%.1f", math.Ceil(float64(maxT*10))/10+0.5)})
|
|
|
|
|
|
// Close the connection
|
|
|
c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
@@ -5924,3 +6381,250 @@ func (c *TaskDataController) A培训时间() {
|
|
|
// Close the connection
|
|
|
c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
}
|
|
|
+func (c *TaskDataController) A作业出入口总测点() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ 一号作业出入口测点 := c.GetString("1号作业出入口测点") // v26nplogbwt1
|
|
|
+ 二号作业出入口测点 := c.GetString("2号作业出入口测点") // v26nplogbwt1
|
|
|
+
|
|
|
+ parts := strings.Split(strings.Trim(一号作业出入口测点, "|")+"|"+strings.Trim(二号作业出入口测点, "|"), "|")
|
|
|
+
|
|
|
+ uniqueMap := make(map[string]struct{})
|
|
|
+ var result []string
|
|
|
+
|
|
|
+ for _, part := range parts {
|
|
|
+ if _, exists := uniqueMap[part]; !exists {
|
|
|
+ uniqueMap[part] = struct{}{}
|
|
|
+ result = append(result, part)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: strings.Join(result, "|")})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+func (c *TaskDataController) A风机布点总测点() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ 一号风机测点 := c.GetString("1号风机测点") // v26nplogbwt1
|
|
|
+ 二号风机测点 := c.GetString("2号风机测点") // v26nplogbwt1
|
|
|
+ 一号风机回风口 := c.GetString("1号风机回风口") // v26nplogbwt1
|
|
|
+ 二号风机回风口 := c.GetString("2号风机回风口") // v26nplogbwt1
|
|
|
+
|
|
|
+ parts := strings.Split(strings.Trim(一号风机回风口, "|")+"|"+strings.Trim(一号风机测点, "|")+"|"+strings.Trim(二号风机回风口, "|")+"|"+strings.Trim(二号风机测点, "|"), "|")
|
|
|
+
|
|
|
+ uniqueMap := make(map[string]struct{})
|
|
|
+ var result []string
|
|
|
+
|
|
|
+ for _, part := range parts {
|
|
|
+ if _, exists := uniqueMap[part]; !exists {
|
|
|
+ uniqueMap[part] = struct{}{}
|
|
|
+ result = append(result, part)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: strings.Join(result, "|")})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+func (c *TaskDataController) A库内除风机出风口回风口外总测点() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ 库内所有测点 := c.GetString("库内所有测点") // v26nplogbwt1
|
|
|
+ 风机布点总测点 := c.GetString("风机布点总测点") // v26nplogbwt1
|
|
|
+
|
|
|
+ parts1 := strings.Split(库内所有测点, "|")
|
|
|
+ parts2 := strings.Split(风机布点总测点, "|")
|
|
|
+
|
|
|
+ excludeMap := make(map[string]struct{})
|
|
|
+ for _, part := range parts2 {
|
|
|
+ excludeMap[part] = struct{}{}
|
|
|
+ }
|
|
|
+
|
|
|
+ var result []string
|
|
|
+ for _, part := range parts1 {
|
|
|
+ if _, exists := excludeMap[part]; !exists {
|
|
|
+ result = append(result, part)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: strings.Join(result, "|")})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+func (c *TaskDataController) A库内除风机出风口回风口特殊位置布点作业口外总测点() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ 库内所有测点 := c.GetString("库内所有测点") // v26nplogbwt1
|
|
|
+ 风机布点总测点 := c.GetString("风机布点总测点") // v26nplogbwt1
|
|
|
+ 作业出入口总测点 := c.GetString("作业出入口总测点") // v26nplogbwt1
|
|
|
+ 照明灯除湿机风幕机等特殊区域测点 := c.GetString("照明灯、除湿机、风幕机等特殊区域测点") // v26nplogbwt1
|
|
|
+
|
|
|
+ parts1 := strings.Split(strings.Trim(库内所有测点, "|"), "|")
|
|
|
+ parts2 := strings.Split(strings.Trim(风机布点总测点, "|"), "|")
|
|
|
+ parts3 := strings.Split(strings.Trim(作业出入口总测点, "|"), "|")
|
|
|
+ parts4 := strings.Split(strings.Trim(照明灯除湿机风幕机等特殊区域测点, "|"), "|")
|
|
|
+
|
|
|
+ excludeMap := make(map[string]struct{})
|
|
|
+ for _, part := range parts2 {
|
|
|
+ excludeMap[part] = struct{}{}
|
|
|
+ }
|
|
|
+ for _, part := range parts3 {
|
|
|
+ excludeMap[part] = struct{}{}
|
|
|
+ }
|
|
|
+ for _, part := range parts4 {
|
|
|
+ excludeMap[part] = struct{}{}
|
|
|
+ }
|
|
|
+
|
|
|
+ var result []string
|
|
|
+ for _, part := range parts1 {
|
|
|
+ if _, exists := excludeMap[part]; !exists {
|
|
|
+ result = append(result, part)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: strings.Join(result, "|")})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+func (c *TaskDataController) A车内除风机出风口回风口外总测点() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ 车内所有测点 := c.GetString("车内所有测点") // v26nplogbwt1
|
|
|
+ 风机布点总测点 := c.GetString("风机布点总测点") // v26nplogbwt1
|
|
|
+
|
|
|
+ parts1 := strings.Split(车内所有测点, "|")
|
|
|
+ parts2 := strings.Split(风机布点总测点, "|")
|
|
|
+
|
|
|
+ excludeMap := make(map[string]struct{})
|
|
|
+ for _, part := range parts2 {
|
|
|
+ excludeMap[part] = struct{}{}
|
|
|
+ }
|
|
|
+
|
|
|
+ var result []string
|
|
|
+ for _, part := range parts1 {
|
|
|
+ if _, exists := excludeMap[part]; !exists {
|
|
|
+ result = append(result, part)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: strings.Join(result, "|")})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+func (c *TaskDataController) A预冷开始时间() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ 现场测试开始时间 := c.GetString("现场测试开始时间") // v26nplogbwt1
|
|
|
+ if len(现场测试开始时间) == 0 || 现场测试开始时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 现场测试开始时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: 现场测试开始时间})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|
|
|
+func (c *TaskDataController) A预冷结束时间() {
|
|
|
+
|
|
|
+ T_task_id := c.GetString("T_task_id") // v26nplogbwt1
|
|
|
+ println("T_task_id:", T_task_id)
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache")
|
|
|
+ c.Ctx.ResponseWriter.Header().Set("Connection", "keep-alive")
|
|
|
+
|
|
|
+ Task_r, err := Task.Read_Task(T_task_id)
|
|
|
+ if err != nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取任务信息失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ 车内所有测点 := c.GetString("车内所有测点") // v26nplogbwt1
|
|
|
+ if len(车内所有测点) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 车内所有测点 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值_ := c.GetString("温度控制范围最高值") // v26nplogbwt1
|
|
|
+ if len(温度控制范围最高值_) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 温度控制范围最高值 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 温度控制范围最高值 := lib.To_float32(温度控制范围最高值_)
|
|
|
+
|
|
|
+ 现场测试开始时间 := c.GetString("现场测试开始时间") // v26nplogbwt1
|
|
|
+ if len(现场测试开始时间) == 0 || 现场测试开始时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 现场测试开始时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ 现场测试结束时间 := c.GetString("现场测试结束时间") // v26nplogbwt1
|
|
|
+ if len(现场测试结束时间) == 0 || 现场测试结束时间 == "null" {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 现场测试结束时间 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ list, _ := Task.Read_TaskData_ById_List_AES(Task_r.T_task_id, 车内所有测点, "", 现场测试开始时间, 现场测试结束时间, 0, 9999)
|
|
|
+ if len(list) == 0 {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "获取 柜内所有测点|现场测试开始时间-现场测试结束时间 当前 温度数据 失败!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 现场测试开开始时间温度高于温度控制范围最高值,取温度下降至“温度控制范围最高值”-0.1以下的最后一个终端时间
|
|
|
+
|
|
|
+ groupMap := make(map[string][]Task.TaskData_)
|
|
|
+ for _, r := range list {
|
|
|
+ groupMap[r.T_id] = append(groupMap[r.T_id], r)
|
|
|
+ }
|
|
|
+
|
|
|
+ var latest *Task.TaskData_
|
|
|
+
|
|
|
+ for _, group := range groupMap {
|
|
|
+ candidate := Task.FindFirstDecreasingTendency(group, 温度控制范围最高值-0.1)
|
|
|
+ if candidate != nil {
|
|
|
+ if latest == nil || lib.ParseTime(candidate.T_time).After(lib.ParseTime(latest.T_time)) {
|
|
|
+ latest = candidate
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if latest == nil {
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 2, Msg: "没有找到 温度下降至“温度控制范围最高值”以下 数据!"})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ lib.SseWriteJSON(c.Ctx.ResponseWriter, lib.JSONSSE{State: 1, Msg: latest.T_time})
|
|
|
+
|
|
|
+ // Close the connection
|
|
|
+ c.Ctx.ResponseWriter.WriteHeader(http.StatusOK)
|
|
|
+}
|