|
@@ -378,44 +378,54 @@ func ImportDeviceData(reader *excelize.File, sn string) string {
|
|
|
//跳过第一条头部描述
|
|
|
continue
|
|
|
}
|
|
|
+ // 定义匹配的解析格式
|
|
|
+ format := row[4]
|
|
|
+ _, err := time.Parse("2006-01-02 15:04:05", row[4])
|
|
|
+ if err != nil {
|
|
|
+ layout := "1/2/06 15:04"
|
|
|
+ parsedTime, _ := time.Parse(layout, row[4])
|
|
|
+ year := parsedTime.Year()
|
|
|
+ if year < 100 {
|
|
|
+ year += 2000
|
|
|
+ }
|
|
|
+ parsedTime = time.Date(year, parsedTime.Month(), parsedTime.Day(), parsedTime.Hour(), parsedTime.Minute(), parsedTime.Second(), parsedTime.Nanosecond(), time.UTC)
|
|
|
+ format = parsedTime.Format("2006-01-02 15:04:05")
|
|
|
|
|
|
+ }
|
|
|
+ isrepeat := Read_DeviceData_Execl_ISREPEAT(sn, format, row[0])
|
|
|
t_sp := Read_device_sensor_parameter(sn, row[0])
|
|
|
if t_sp == "" {
|
|
|
sprintf := fmt.Sprintf("当前sn或探头参数ID不存在:%s,%s", sn, row[0])
|
|
|
return sprintf
|
|
|
}
|
|
|
- isrepeat := Read_DeviceData_Execl_ISREPEAT(sn, row[3], row[0])
|
|
|
if isrepeat {
|
|
|
//如果重复就用更新数据
|
|
|
- sql := fmt.Sprintf("UPDATE z_device_data_%s SET t_t=%s,t_rh=%s WHERE t_time='%s' AND t_id=%s", sn, row[1], row[2], row[3], row[0])
|
|
|
+ sql := fmt.Sprintf("UPDATE z_device_data_%s SET t_t=%s,t_rh=%s WHERE t_time='%s' AND t_id=%s ", sn, row[1], row[2], format, row[0])
|
|
|
_, err := o.Raw(sql).Exec()
|
|
|
if err != nil {
|
|
|
fmt.Println(err.Error())
|
|
|
- return err.Error()
|
|
|
- } else {
|
|
|
- return "导入成功"
|
|
|
+ return "更新失败"
|
|
|
}
|
|
|
} else {
|
|
|
// t_id,t_t,t_rh,t_time
|
|
|
//传感器 传感器参数ID 温度 湿度 GPS 采集时间 创建时间
|
|
|
- values[i-1] = fmt.Sprintf("(%s,%s,%s,%s,'','%s')", row[0], t_sp, row[1], row[2], row[3])
|
|
|
- sprintf := fmt.Sprintf("insert into z_device_data_%s (t_id,t_sp,t_t,t_rh,t_site,t_time) values (%s,%s,%s,%s,'','%s')", sn, row[0], t_sp, row[1], row[2], row[3])
|
|
|
+ parse, _ := time.Parse("2006-01-02 15:04:05", format)
|
|
|
+ parse = parse.Add(time.Millisecond * 8000)
|
|
|
+ parse.Format("2006-01-02 15:04:05")
|
|
|
+ values[i-1] = fmt.Sprintf("(%s,%s,%s,%s,'','%s')", row[0], t_sp, row[1], row[2], format)
|
|
|
+ sprintf := fmt.Sprintf("insert into z_device_data_%s (t_id,t_sp,t_t,t_rh,t_site,t_time,create_time) values (%s,%s,%s,%s,'%s','%s','%s')", sn, row[0], t_sp, row[1], row[2], row[3], format, parse.Format("2006-01-02 15:04:05"))
|
|
|
log.Println(sprintf)
|
|
|
//执行SQL
|
|
|
- exec, err := o.Raw(sprintf).Exec()
|
|
|
+ _, err := o.Raw(sprintf).Exec()
|
|
|
if err != nil {
|
|
|
fmt.Println("执行失败")
|
|
|
return "请检查表格是否具有重复数据!!!"
|
|
|
- } else {
|
|
|
- rowsAffected, _ := exec.RowsAffected()
|
|
|
- fmt.Println("插入", rowsAffected, "条数据")
|
|
|
- return "导入成功"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//sqlStatement := fmt.Sprintf("insert into z_device_data_%s(t_id,t_sp,t_t,t_rh,t_site,t_time) values %s", sn, strings.Join(values, ","))
|
|
|
//fmt.Println("执行批量导入SQL:", sqlStatement)
|
|
|
- return "导入失败"
|
|
|
+ return "导入成功"
|
|
|
|
|
|
}
|
|
|
func Read_DeviceData_Execl_ISREPEAT(sn, t_time, t_id string) bool {
|