添加IMS数据接收状态监控
This commit is contained in:
parent
3f7a11e890
commit
b01380adc3
|
|
@ -8,14 +8,9 @@ import java.sql.Timestamp;
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.Duration;
|
import java.time.*;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.Calendar;
|
import java.util.*;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 类描述:时间操作定义类
|
* 类描述:时间操作定义类
|
||||||
|
|
@ -50,24 +45,27 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
return new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
public static ThreadLocal<SimpleDateFormat> yyyymmddhhmmss = new ThreadLocal<SimpleDateFormat>() {
|
public static ThreadLocal<SimpleDateFormat> yyyymmddhhmmss =
|
||||||
@Override
|
new ThreadLocal<SimpleDateFormat>() {
|
||||||
protected SimpleDateFormat initialValue() {
|
@Override
|
||||||
return new SimpleDateFormat("yyyyMMddHHmmss");
|
protected SimpleDateFormat initialValue() {
|
||||||
}
|
return new SimpleDateFormat("yyyyMMddHHmmss");
|
||||||
};
|
}
|
||||||
public static ThreadLocal<SimpleDateFormat> short_time_sdf = new ThreadLocal<SimpleDateFormat>() {
|
};
|
||||||
@Override
|
public static ThreadLocal<SimpleDateFormat> short_time_sdf =
|
||||||
protected SimpleDateFormat initialValue() {
|
new ThreadLocal<SimpleDateFormat>() {
|
||||||
return new SimpleDateFormat("HH:mm");
|
@Override
|
||||||
}
|
protected SimpleDateFormat initialValue() {
|
||||||
};
|
return new SimpleDateFormat("HH:mm");
|
||||||
public static ThreadLocal<SimpleDateFormat> datetimeFormat = new ThreadLocal<SimpleDateFormat>() {
|
}
|
||||||
@Override
|
};
|
||||||
protected SimpleDateFormat initialValue() {
|
public static ThreadLocal<SimpleDateFormat> datetimeFormat =
|
||||||
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
new ThreadLocal<SimpleDateFormat>() {
|
||||||
}
|
@Override
|
||||||
};
|
protected SimpleDateFormat initialValue() {
|
||||||
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 以毫秒表示的时间
|
* 以毫秒表示的时间
|
||||||
|
|
@ -79,6 +77,7 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 指定模式的时间格式
|
* 指定模式的时间格式
|
||||||
|
*
|
||||||
* @param pattern
|
* @param pattern
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -227,7 +226,7 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
/**
|
/**
|
||||||
* 日期转换为字符串
|
* 日期转换为字符串
|
||||||
*
|
*
|
||||||
* @param date 日期
|
* @param date 日期
|
||||||
* @param dateSdf 日期格式
|
* @param dateSdf 日期格式
|
||||||
* @return 字符串
|
* @return 字符串
|
||||||
*/
|
*/
|
||||||
|
|
@ -585,7 +584,8 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
return cal;
|
return cal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String formatAddDate(String src, String pattern, int amount) throws ParseException {
|
public static String formatAddDate(String src, String pattern, int amount)
|
||||||
|
throws ParseException {
|
||||||
Calendar cal;
|
Calendar cal;
|
||||||
cal = parseCalendar(src, pattern);
|
cal = parseCalendar(src, pattern);
|
||||||
cal.add(Calendar.DATE, amount);
|
cal.add(Calendar.DATE, amount);
|
||||||
|
|
@ -669,10 +669,12 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
} else if (text.indexOf(SymbolConstant.COLON) > 0 && text.length() == length19) {
|
} else if (text.indexOf(SymbolConstant.COLON) > 0 && text.length() == length19) {
|
||||||
setValue(DateUtils.datetimeFormat.get().parse(text));
|
setValue(DateUtils.datetimeFormat.get().parse(text));
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Could not parse date, date format is error ");
|
throw new IllegalArgumentException(
|
||||||
|
"Could not parse date, date format is error ");
|
||||||
}
|
}
|
||||||
} catch (ParseException ex) {
|
} catch (ParseException ex) {
|
||||||
IllegalArgumentException iae = new IllegalArgumentException("Could not parse date: " + ex.getMessage());
|
IllegalArgumentException iae =
|
||||||
|
new IllegalArgumentException("Could not parse date: " + ex.getMessage());
|
||||||
iae.initCause(ex);
|
iae.initCause(ex);
|
||||||
throw iae;
|
throw iae;
|
||||||
}
|
}
|
||||||
|
|
@ -689,13 +691,14 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将字符串转成时间
|
* 将字符串转成时间
|
||||||
|
*
|
||||||
* @param str
|
* @param str
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Date parseDatetime(String str){
|
public static Date parseDatetime(String str) {
|
||||||
try {
|
try {
|
||||||
return datetimeFormat.get().parse(str);
|
return datetimeFormat.get().parse(str);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
@ -716,8 +719,10 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
Calendar calendar2 = Calendar.getInstance();
|
Calendar calendar2 = Calendar.getInstance();
|
||||||
calendar2.setTime(date2);
|
calendar2.setTime(date2);
|
||||||
boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
|
boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
|
||||||
boolean isSameMonth = isSameYear && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
|
boolean isSameMonth =
|
||||||
return isSameMonth && calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH);
|
isSameYear && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
|
||||||
|
return isSameMonth &&
|
||||||
|
calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -731,7 +736,8 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
LocalDateTime currentTime = LocalDateTime.now();
|
LocalDateTime currentTime = LocalDateTime.now();
|
||||||
|
|
||||||
// 将java.util.Date转换为java.time.LocalDateTime
|
// 将java.util.Date转换为java.time.LocalDateTime
|
||||||
LocalDateTime convertedTargetDate = targetDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
LocalDateTime convertedTargetDate =
|
||||||
|
targetDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||||
|
|
||||||
// 计算时间差
|
// 计算时间差
|
||||||
Duration duration = Duration.between(currentTime, convertedTargetDate);
|
Duration duration = Duration.between(currentTime, convertedTargetDate);
|
||||||
|
|
@ -752,7 +758,8 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
// 获取当前日期
|
// 获取当前日期
|
||||||
LocalDate currentDate = LocalDate.now();
|
LocalDate currentDate = LocalDate.now();
|
||||||
// 将java.util.Date转换为java.time.LocalDate
|
// 将java.util.Date转换为java.time.LocalDate
|
||||||
LocalDate convertedTargetDate = targetDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
LocalDate convertedTargetDate =
|
||||||
|
targetDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
// 计算日期差
|
// 计算日期差
|
||||||
long daysDifference = ChronoUnit.DAYS.between(currentDate, convertedTargetDate);
|
long daysDifference = ChronoUnit.DAYS.between(currentDate, convertedTargetDate);
|
||||||
return daysDifference;
|
return daysDifference;
|
||||||
|
|
@ -774,7 +781,8 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
Calendar calendar2 = Calendar.getInstance();
|
Calendar calendar2 = Calendar.getInstance();
|
||||||
calendar2.setTime(date2);
|
calendar2.setTime(date2);
|
||||||
boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
|
boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
|
||||||
return isSameYear && calendar1.get(Calendar.WEEK_OF_YEAR) == calendar2.get(Calendar.WEEK_OF_YEAR);
|
return isSameYear &&
|
||||||
|
calendar1.get(Calendar.WEEK_OF_YEAR) == calendar2.get(Calendar.WEEK_OF_YEAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -814,4 +822,31 @@ public class DateUtils extends PropertyEditorSupport {
|
||||||
return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
|
return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定年月的所有日期(yyyy-MM-dd格式)
|
||||||
|
*
|
||||||
|
* @param year 年份(如2026)
|
||||||
|
* @param month 月份(1-12)
|
||||||
|
* @return 日期列表(按时间正序排列)
|
||||||
|
*/
|
||||||
|
public static List<String> getDaysOfMonth(Integer year, Integer month) {
|
||||||
|
// 参数校验
|
||||||
|
if (year == null || month == null || month < 1 || month > 12) {
|
||||||
|
throw new IllegalArgumentException("无效的年月参数");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> dateList = new ArrayList<>();
|
||||||
|
YearMonth yearMonth = YearMonth.of(year, month);
|
||||||
|
// 获取该月的总天数
|
||||||
|
int totalDays = yearMonth.lengthOfMonth();
|
||||||
|
|
||||||
|
// 遍历该月所有日期
|
||||||
|
for (int day = 1; day <= totalDays; day++) {
|
||||||
|
LocalDate date = LocalDate.of(year, month, day);
|
||||||
|
dateList.add(date_sdf.get().format(date));
|
||||||
|
}
|
||||||
|
|
||||||
|
return dateList;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
package org.jeecg.modules.base.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("stas_station_setting")
|
||||||
|
public class StasStationSetting {
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
private Integer id;
|
||||||
|
/**
|
||||||
|
* 区分PHDF或PHD等
|
||||||
|
*/
|
||||||
|
private String typeGroup;
|
||||||
|
/**
|
||||||
|
* 类型,如SAUNA, SPALAX, PARTICULATE
|
||||||
|
*/
|
||||||
|
private String stationType;
|
||||||
|
/**
|
||||||
|
* 最低采集时长
|
||||||
|
*/
|
||||||
|
private Double collectLow;
|
||||||
|
/**
|
||||||
|
* 最高采集时长
|
||||||
|
*/
|
||||||
|
private Double collectHigh;
|
||||||
|
/**
|
||||||
|
* 最低acquisition_live_sec
|
||||||
|
*/
|
||||||
|
private Double liveLow;
|
||||||
|
/**
|
||||||
|
* 最高acquisition_live_sec
|
||||||
|
*/
|
||||||
|
private Double liveHigh;
|
||||||
|
/**
|
||||||
|
* quantity
|
||||||
|
*/
|
||||||
|
private Integer quantity;
|
||||||
|
/**
|
||||||
|
* Xe体积
|
||||||
|
*/
|
||||||
|
private Double xeVolume;
|
||||||
|
/**
|
||||||
|
* mdc
|
||||||
|
*/
|
||||||
|
private Integer mdc;
|
||||||
|
/**
|
||||||
|
* 核素名称
|
||||||
|
*/
|
||||||
|
private String nuclideName;
|
||||||
|
/**
|
||||||
|
* live_qc
|
||||||
|
*/
|
||||||
|
private Integer liveQc;
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
private Integer number;
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date createdTime;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
package org.jeecg.modules.base.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.jeecg.modules.base.entity.StasStationSetting;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface StasStationSettingMapper extends BaseMapper<StasStationSetting> {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,175 @@
|
||||||
|
package org.jeecg.imsDataMonitor.controller;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||||
|
import org.jeecg.imsDataMonitor.entity.ProvisionData;
|
||||||
|
import org.jeecg.imsDataMonitor.entity.StationInfo;
|
||||||
|
import org.jeecg.imsDataMonitor.service.IMSDataMonitorService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/imsDataMonitor")
|
||||||
|
public class imsDataMonitorController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMSDataMonitorService imsDataMonitorService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取Particulate 台站的有效率和提供率
|
||||||
|
*
|
||||||
|
* @param code 类型代码
|
||||||
|
* @param startDate 开始日期
|
||||||
|
* @param endDate 结束日期
|
||||||
|
* @return 返回 Result
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "Particulate 台站的有效率")
|
||||||
|
@GetMapping("getParticulate")
|
||||||
|
public Result<?> getParticulate(@RequestParam(value = "code", required = false) String code,
|
||||||
|
@RequestParam(value = "startDate", required = false)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
Date startDate,
|
||||||
|
@RequestParam(value = "endDate", required = false)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
Date endDate) {
|
||||||
|
// List<ProvisionData> data = imsDataMonitorService.getParticulate(code, startDate, endDate);
|
||||||
|
// return Result.OK(data);
|
||||||
|
//TODO 测试待删除
|
||||||
|
try (InputStream inputStream = imsDataMonitorController.class.getClassLoader()
|
||||||
|
.getResourceAsStream("Particulate.json")) {
|
||||||
|
//region 测试数据
|
||||||
|
//endregion
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
Result<List<ProvisionData>> resultData =
|
||||||
|
objectMapper.readValue(inputStream, new TypeReference<>() {
|
||||||
|
});
|
||||||
|
return resultData;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Spalax 台站的有效率
|
||||||
|
*
|
||||||
|
* @param code
|
||||||
|
* @param startDate
|
||||||
|
* @param endDate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "Spalax 台站的有效率")
|
||||||
|
@GetMapping("getSpalax")
|
||||||
|
public Result<?> getSpalax(@RequestParam(value = "code", required = false) String code,
|
||||||
|
@RequestParam(value = "startDate", required = false)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
Date startDate,
|
||||||
|
@RequestParam(value = "endDate", required = false)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
Date endDate) {
|
||||||
|
// List<ProvisionData> data = imsDataMonitorService.getSpalax(code, startDate, endDate);
|
||||||
|
// return Result.OK(data);
|
||||||
|
//TODO 测试待删除
|
||||||
|
try (InputStream inputStream = imsDataMonitorController.class.getClassLoader()
|
||||||
|
.getResourceAsStream("Spalax.json")) {
|
||||||
|
//region 测试数据
|
||||||
|
//endregion
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
Result<List<ProvisionData>> resultData =
|
||||||
|
objectMapper.readValue(inputStream, new TypeReference<>() {
|
||||||
|
});
|
||||||
|
return resultData;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sauna2 台站的有效率
|
||||||
|
*
|
||||||
|
* @param code
|
||||||
|
* @param startDate
|
||||||
|
* @param endDate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "Sauna2 台站的有效率")
|
||||||
|
@GetMapping("getSauna2")
|
||||||
|
public Result<?> getSauna2(@RequestParam(value = "code", required = false) String code,
|
||||||
|
@RequestParam(value = "startDate", required = false)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
Date startDate,
|
||||||
|
@RequestParam(value = "endDate", required = false)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
Date endDate) {
|
||||||
|
// List<ProvisionData> data = imsDataMonitorService.getSauna2(code, startDate, endDate);
|
||||||
|
// return Result.OK(data);
|
||||||
|
//TODO 测试待删除
|
||||||
|
try (InputStream inputStream = imsDataMonitorController.class.getClassLoader()
|
||||||
|
.getResourceAsStream("Sauna2.json")) {
|
||||||
|
//region 测试数据
|
||||||
|
//endregion
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
Result<List<ProvisionData>> resultData =
|
||||||
|
objectMapper.readValue(inputStream, new TypeReference<>() {
|
||||||
|
});
|
||||||
|
return resultData;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sauna3 台站的有效率
|
||||||
|
*
|
||||||
|
* @param code
|
||||||
|
* @param startDate
|
||||||
|
* @param endDate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "Sauna3 台站的有效率")
|
||||||
|
@GetMapping("getSauna3")
|
||||||
|
public Result<?> getSauna3(@RequestParam(value = "code", required = false) String code,
|
||||||
|
@RequestParam(value = "startDate", required = false)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
Date startDate,
|
||||||
|
@RequestParam(value = "endDate", required = false)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
Date endDate) {
|
||||||
|
// List<ProvisionData> data = imsDataMonitorService.getSauna3(code, startDate, endDate);
|
||||||
|
// return Result.OK(data);
|
||||||
|
//TODO 测试待删除
|
||||||
|
try (InputStream inputStream = imsDataMonitorController.class.getClassLoader()
|
||||||
|
.getResourceAsStream("Sauna3.json")) {
|
||||||
|
//region 测试数据
|
||||||
|
//endregion
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
Result<List<ProvisionData>> resultData =
|
||||||
|
objectMapper.readValue(inputStream, new TypeReference<>() {
|
||||||
|
});
|
||||||
|
return resultData;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package org.jeecg.imsDataMonitor.entity;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PhdfProvisionEfficiency {
|
||||||
|
//liveLow
|
||||||
|
private String liveLow;
|
||||||
|
//liveHigh
|
||||||
|
private String liveHigh;
|
||||||
|
//quantity
|
||||||
|
private String quantity;
|
||||||
|
//collectLow
|
||||||
|
private String collectLow;
|
||||||
|
//collectHigh
|
||||||
|
private String collectHigh;
|
||||||
|
//curDateTime
|
||||||
|
private String curDateTime;
|
||||||
|
//pretime
|
||||||
|
private String pretime;
|
||||||
|
//number
|
||||||
|
private String number;
|
||||||
|
|
||||||
|
private String nuclideName;
|
||||||
|
|
||||||
|
private String liveQc;
|
||||||
|
private String mdc;
|
||||||
|
private String xeVolume;
|
||||||
|
//stationId
|
||||||
|
private List<Integer> stationId;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package org.jeecg.imsDataMonitor.entity;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ProvisionData implements Serializable {
|
||||||
|
|
||||||
|
private String stationCode;
|
||||||
|
/**
|
||||||
|
* 数据数量
|
||||||
|
*/
|
||||||
|
private Integer dataNumber;
|
||||||
|
/**
|
||||||
|
* 数据提供率
|
||||||
|
*/
|
||||||
|
private double dataRate;
|
||||||
|
/**
|
||||||
|
* 数据有效率
|
||||||
|
*/
|
||||||
|
private double dataEfficiency;
|
||||||
|
/**
|
||||||
|
* 采集开始时间
|
||||||
|
*/
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||||
|
private Date collectStart;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
package org.jeecg.imsDataMonitor.entity;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class StationInfo implements Serializable {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String stationCode;
|
||||||
|
|
||||||
|
private String countryCode;
|
||||||
|
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
private String lon;
|
||||||
|
|
||||||
|
private String lat;
|
||||||
|
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
private String phdf;
|
||||||
|
|
||||||
|
private String phd;
|
||||||
|
|
||||||
|
private String met;
|
||||||
|
|
||||||
|
private String soh;
|
||||||
|
|
||||||
|
private String phdMetSoh;
|
||||||
|
|
||||||
|
private String used;
|
||||||
|
|
||||||
|
private String quality;
|
||||||
|
|
||||||
|
private String efficCalculType;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
package org.jeecg.imsDataMonitor.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.jeecg.imsDataMonitor.entity.PhdfProvisionEfficiency;
|
||||||
|
import org.jeecg.imsDataMonitor.entity.ProvisionData;
|
||||||
|
import org.jeecg.modules.base.entity.configuration.GardsStations;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface IMSDataMonitorMapper extends BaseMapper<GardsStations> {
|
||||||
|
|
||||||
|
List<GardsStations> findStationList(@Param("systemType") String systemType);
|
||||||
|
|
||||||
|
List<GardsStations> findEfficStationList(@Param("efficType") String efficType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询台站每天的有效率
|
||||||
|
*
|
||||||
|
* @param efficiency
|
||||||
|
* @return List<ProvisionData>
|
||||||
|
*/
|
||||||
|
List<ProvisionData> findPhdfParticulateEfficiency(
|
||||||
|
@Param("efficiency") PhdfProvisionEfficiency efficiency);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询台站每天的有效率
|
||||||
|
*
|
||||||
|
* @param efficiency
|
||||||
|
* @return List<ProvisionData>
|
||||||
|
*/
|
||||||
|
List<ProvisionData> findPhdfSpalaxEfficiency(
|
||||||
|
@Param("efficiency") PhdfProvisionEfficiency efficiency);
|
||||||
|
/**
|
||||||
|
* 查询台站每天的有效率
|
||||||
|
*
|
||||||
|
* @param efficiency
|
||||||
|
* @return List<ProvisionData>
|
||||||
|
*/
|
||||||
|
List<ProvisionData> findPhdfSauna2Efficiency(
|
||||||
|
@Param("efficiency") PhdfProvisionEfficiency efficiency);
|
||||||
|
/**
|
||||||
|
* 查询台站每天的有效率
|
||||||
|
*
|
||||||
|
* @param efficiency
|
||||||
|
* @return List<ProvisionData>
|
||||||
|
*/
|
||||||
|
List<ProvisionData> findPhdfSauna3Efficiency(
|
||||||
|
@Param("efficiency") PhdfProvisionEfficiency efficiency);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,185 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="org.jeecg.imsDataMonitor.mapper.IMSDataMonitorMapper">
|
||||||
|
<select id="findStationList" resultType="org.jeecg.modules.base.entity.configuration.GardsStations">
|
||||||
|
SELECT * FROM CONFIGURATION.GARDS_STATIONS
|
||||||
|
<where>
|
||||||
|
TYPE IN
|
||||||
|
<if test='systemType == "P"'>
|
||||||
|
('Manual', 'CINDER', 'RASA', 'LAB')
|
||||||
|
</if>
|
||||||
|
<if test='systemType == "B"'>
|
||||||
|
('SAUNA', 'ARIX-4', 'ARIX-2', 'SPALAX')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
<select id="findEfficStationList" resultType="org.jeecg.modules.base.entity.configuration.GardsStations">
|
||||||
|
SELECT * FROM CONFIGURATION.GARDS_STATIONS
|
||||||
|
<where>
|
||||||
|
EFFIC_CALCUL_TYPE ='${efficType}'
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="findPhdfParticulateEfficiency" resultType="org.jeecg.imsDataMonitor.entity.ProvisionData">
|
||||||
|
SELECT TRUNC(sdata.COLLECT_START) AS collectStart,
|
||||||
|
COUNT(*) AS total_samples,
|
||||||
|
sta.STATION_CODE ,
|
||||||
|
COUNT(
|
||||||
|
CASE
|
||||||
|
WHEN sdata.data_type = 'Q' THEN
|
||||||
|
1
|
||||||
|
WHEN sdata.data_type = 'S'
|
||||||
|
AND (sdata.acquisition_live_sec / 60 / 60.00) BETWEEN #{efficiency.liveLow}
|
||||||
|
AND #{efficiency.liveHigh}
|
||||||
|
AND
|
||||||
|
(to_number(sdata.COLLECT_STOP - sdata.COLLECT_START) * 24) BETWEEN #{efficiency.liveLow}
|
||||||
|
AND #{efficiency.liveHigh}
|
||||||
|
AND sdata.quantity > 10800 THEN
|
||||||
|
1
|
||||||
|
END
|
||||||
|
) AS dataNumber,
|
||||||
|
ROUND(
|
||||||
|
COUNT(
|
||||||
|
CASE
|
||||||
|
WHEN sdata.data_type = 'Q' THEN
|
||||||
|
1
|
||||||
|
WHEN sdata.data_type = 'S'
|
||||||
|
AND (sdata.acquisition_live_sec / 60 / 60.00) BETWEEN #{efficiency.liveLow}
|
||||||
|
AND #{efficiency.liveHigh}
|
||||||
|
AND
|
||||||
|
(to_number(sdata.COLLECT_STOP - sdata.COLLECT_START) * 24) BETWEEN #{efficiency.liveLow}
|
||||||
|
AND #{efficiency.liveHigh}
|
||||||
|
AND sdata.quantity > #{efficiency.quantity} THEN
|
||||||
|
1
|
||||||
|
END
|
||||||
|
) * 100.0 / (1 * ${efficiency.number}),
|
||||||
|
2
|
||||||
|
)AS dataEfficiency
|
||||||
|
|
||||||
|
FROM ORIGINAL.GARDS_SAMPLE_DATA sdata
|
||||||
|
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta ON sta.station_id = sdata.station_id
|
||||||
|
WHERE SDATA.SAMPLE_TYPE = 'P'
|
||||||
|
AND sdata.spectral_qualifie = 'FULL'
|
||||||
|
AND sta.station_code LIKE '__P%'
|
||||||
|
AND sdata.station_id IN
|
||||||
|
<foreach collection="efficiency.stationId" item="id" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
AND sdata.COLLECT_START BETWEEN TO_DATE('${efficiency.pretime}', 'YYYY-MM-DD hh24:mi:ss')
|
||||||
|
AND TO_DATE('${efficiency.curDateTime}', 'YYYY-MM-DD hh24:mi:ss')
|
||||||
|
GROUP BY TRUNC(sdata.COLLECT_START),sta.STATION_CODE
|
||||||
|
ORDER BY collectStart;
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="findPhdfSpalaxEfficiency" resultType="org.jeecg.imsDataMonitor.entity.ProvisionData">
|
||||||
|
SELECT
|
||||||
|
TRUNC(sdata.COLLECT_START) AS collectStart,
|
||||||
|
sta.STATION_CODE ,
|
||||||
|
SUM(CASE
|
||||||
|
WHEN sdata.acquisition_live_sec > ${efficiency.liveQc}
|
||||||
|
AND sdata.data_type = 'Q'
|
||||||
|
AND sdata.spectral_qualifie = 'FULL'
|
||||||
|
THEN 1 ELSE 0
|
||||||
|
END)
|
||||||
|
+ SUM(CASE
|
||||||
|
WHEN sdata.data_type = 'S'
|
||||||
|
AND (sdata.acquisition_live_sec/60/60.00) BETWEEN ${efficiency.liveLow} AND ${efficiency.liveHigh}
|
||||||
|
AND (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START) * 24) BETWEEN ${efficiency.collectLow} AND ${efficiency.collectHigh}
|
||||||
|
AND sdata.quantity > ${efficiency.quantity}
|
||||||
|
THEN 1 ELSE 0
|
||||||
|
END) AS dataNumber,
|
||||||
|
ROUND(
|
||||||
|
(SUM(CASE
|
||||||
|
WHEN sdata.acquisition_live_sec > ${efficiency.liveQc}
|
||||||
|
AND sdata.data_type = 'Q'
|
||||||
|
AND sdata.spectral_qualifie = 'FULL'
|
||||||
|
THEN 1 ELSE 0
|
||||||
|
END)
|
||||||
|
+ SUM(CASE
|
||||||
|
WHEN sdata.data_type = 'S'
|
||||||
|
AND (sdata.acquisition_live_sec/60/60.00) BETWEEN ${efficiency.liveLow} AND ${efficiency.liveHigh}
|
||||||
|
AND (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START) * 24) BETWEEN ${efficiency.collectLow} AND ${efficiency.collectHigh}
|
||||||
|
AND sdata.quantity > ${efficiency.quantity}
|
||||||
|
THEN 1 ELSE 0
|
||||||
|
END))
|
||||||
|
/ 1 * ${efficiency.number} * 100,
|
||||||
|
2
|
||||||
|
) AS dataEfficiency
|
||||||
|
FROM ORIGINAL.GARDS_SAMPLE_DATA sdata
|
||||||
|
LEFT JOIN RNAUTO.GARDS_XE_RESULTS xe ON xe.sample_id = sdata.sample_id
|
||||||
|
LEFT JOIN ORIGINAL.GARDS_SAMPLE_AUX aux ON aux.sample_id = sdata.sample_id
|
||||||
|
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta ON sta.station_id = sdata.station_id
|
||||||
|
|
||||||
|
<where>
|
||||||
|
sta.EFFIC_CALCUL_TYPE = 'SPALAX'
|
||||||
|
AND SDATA.SAMPLE_TYPE = 'G'
|
||||||
|
AND substr(sta.station_code, 3, 1) = 'X'
|
||||||
|
AND sdata.station_id IN
|
||||||
|
<foreach collection="efficiency.stationId" item="id" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
AND sdata.COLLECT_START BETWEEN TO_DATE(#{efficiency.pretime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||||
|
AND TO_DATE(#{efficiency.curDateTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||||
|
</where>
|
||||||
|
|
||||||
|
GROUP BY TRUNC(sdata.COLLECT_START),sta.STATION_CODE
|
||||||
|
ORDER BY collectStart
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="findPhdfSauna2Efficiency" resultType="org.jeecg.imsDataMonitor.entity.ProvisionData">
|
||||||
|
SELECT
|
||||||
|
TRUNC(sdata.COLLECT_START) AS collectStart,
|
||||||
|
sta.STATION_CODE ,
|
||||||
|
(SUM(CASE WHEN ROUND(sdata.acquisition_live_sec/60/60.00) BETWEEN ${efficiency.liveLow} AND ${efficiency.liveHigh}
|
||||||
|
AND sdata.quantity > ${efficiency.quantity}
|
||||||
|
AND xe.MDC < ${efficiency.mdc}
|
||||||
|
AND (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START)*24) BETWEEN ${efficiency.collectLow} AND ${efficiency.collectHigh}
|
||||||
|
AND aux.xe_volume > ${efficiency.xeVolume}
|
||||||
|
AND xe.nuclide_name = '${efficiency.nuclideName}'
|
||||||
|
AND sdata.data_type = 'S' THEN 1 ELSE 0 END)
|
||||||
|
+ SUM(CASE WHEN sdata.acquisition_live_sec > ${efficiency.liveQc} AND sdata.data_type = 'Q' THEN 1 ELSE 0 END)
|
||||||
|
+ SUM(CASE WHEN ROUND(sdata.acquisition_live_sec/60/60.00, 2) BETWEEN ${efficiency.liveLow} AND ${efficiency.liveHigh}
|
||||||
|
AND sdata.data_type = 'G' THEN 1 ELSE 0 END)) AS dataNumber,
|
||||||
|
|
||||||
|
ROUND((SUM(CASE WHEN ROUND(sdata.acquisition_live_sec/60/60.00) BETWEEN ${efficiency.liveLow} AND ${efficiency.liveHigh}
|
||||||
|
AND sdata.quantity > ${efficiency.quantity}
|
||||||
|
AND xe.MDC < ${efficiency.mdc}
|
||||||
|
AND (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START)*24) BETWEEN ${efficiency.collectLow} AND ${efficiency.collectHigh}
|
||||||
|
AND aux.xe_volume > ${efficiency.xeVolume}
|
||||||
|
AND xe.nuclide_name = '${efficiency.nuclideName}'
|
||||||
|
AND sdata.data_type = 'S' THEN 1 ELSE 0 END)
|
||||||
|
+ SUM(CASE WHEN sdata.acquisition_live_sec > ${efficiency.liveQc} AND sdata.data_type = 'Q' THEN 1 ELSE 0 END)
|
||||||
|
+ SUM(CASE WHEN ROUND(sdata.acquisition_live_sec/60/60.00, 2) BETWEEN ${efficiency.liveLow} AND ${efficiency.liveHigh}
|
||||||
|
AND sdata.data_type = 'G' THEN 1 ELSE 0 END))
|
||||||
|
/ ${efficiency.number} * 100, 2) AS dataEfficiency
|
||||||
|
|
||||||
|
FROM ORIGINAL.GARDS_SAMPLE_DATA sdata
|
||||||
|
LEFT JOIN RNAUTO.GARDS_XE_RESULTS xe ON xe.sample_id = sdata.sample_id
|
||||||
|
LEFT JOIN ORIGINAL.GARDS_SAMPLE_AUX aux ON aux.sample_id = sdata.sample_id
|
||||||
|
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta ON sta.station_id = sdata.station_id
|
||||||
|
|
||||||
|
<where>
|
||||||
|
substr(sta.station_code, 3, 1) = 'X'
|
||||||
|
AND SDATA.SAMPLE_TYPE = 'B'
|
||||||
|
AND sdata.spectral_qualifie = 'FULL'
|
||||||
|
AND sdata.station_id IN
|
||||||
|
<foreach collection="efficiency.stationId" item="id" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
AND sdata.COLLECT_START BETWEEN TO_DATE(#{efficiency.pretime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||||
|
AND TO_DATE(#{efficiency.curDateTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||||
|
</where>
|
||||||
|
|
||||||
|
GROUP BY TRUNC(sdata.COLLECT_START),sta.STATION_CODE
|
||||||
|
ORDER BY collectStart
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="findPhdfSauna3Efficiency" resultType="org.jeecg.imsDataMonitor.entity.ProvisionData">
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
package org.jeecg.imsDataMonitor.service;
|
||||||
|
|
||||||
|
|
||||||
|
import org.jeecg.imsDataMonitor.entity.ProvisionData;
|
||||||
|
import org.jeecg.modules.base.entity.configuration.GardsStations;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public interface IMSDataMonitorService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取台站集合
|
||||||
|
*
|
||||||
|
* @param systemType
|
||||||
|
* @return List<GardsStations> 集合
|
||||||
|
*/
|
||||||
|
List<GardsStations> getGardsStationList(String systemType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*获取Particulate类型的有效率数据
|
||||||
|
* @return Map<String, List<ProvisionData>>
|
||||||
|
*/
|
||||||
|
List<ProvisionData> getParticulate(String code, Date startDate, Date endDate);
|
||||||
|
|
||||||
|
List<ProvisionData> getSpalax(String code, Date startDate, Date endDate);
|
||||||
|
|
||||||
|
List<ProvisionData> getSauna2(String code, Date startDate, Date endDate);
|
||||||
|
|
||||||
|
List<ProvisionData> getSauna3(String code, Date startDate, Date endDate);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,237 @@
|
||||||
|
package org.jeecg.imsDataMonitor.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.jeecg.common.util.DateUtils;
|
||||||
|
import org.jeecg.imsDataMonitor.entity.PhdfProvisionEfficiency;
|
||||||
|
import org.jeecg.imsDataMonitor.entity.ProvisionData;
|
||||||
|
import org.jeecg.imsDataMonitor.mapper.IMSDataMonitorMapper;
|
||||||
|
import org.jeecg.imsDataMonitor.service.IMSDataMonitorService;
|
||||||
|
import org.jeecg.modules.base.entity.configuration.GardsStations;
|
||||||
|
import org.jeecg.modules.base.mapper.GardsStationsMapper;
|
||||||
|
import org.jeecg.modules.base.mapper.StasStationSettingMapper;
|
||||||
|
import org.jspecify.annotations.NonNull;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
@DS("ora")
|
||||||
|
public class IMSDataMonitorServiceImpl implements IMSDataMonitorService {
|
||||||
|
@Autowired
|
||||||
|
private IMSDataMonitorMapper imsDataMonitorMapper;
|
||||||
|
@Autowired
|
||||||
|
private StasStationSettingMapper settingMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<GardsStations> getGardsStationList(String systemType) {
|
||||||
|
return imsDataMonitorMapper.findStationList(systemType);
|
||||||
|
}
|
||||||
|
|
||||||
|
//region Particulate
|
||||||
|
@Override
|
||||||
|
public List<ProvisionData> getParticulate(String code, Date startDate, Date endDate) {
|
||||||
|
//获取Particulate类型的台站信息
|
||||||
|
List<GardsStations> stations = imsDataMonitorMapper.findStationList("P");
|
||||||
|
String[] times = getDataTime(startDate, endDate);
|
||||||
|
//有效率状态
|
||||||
|
return getStationDailyData(stations, times[0], times[1]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ProvisionData> getStationDailyData(List<GardsStations> stationList,
|
||||||
|
String startTime, String endTime) {
|
||||||
|
|
||||||
|
if (CollectionUtil.isEmpty(stationList)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String liveLow = "21.6";
|
||||||
|
String liveHigh = "26.4";
|
||||||
|
String quantity = "10800";
|
||||||
|
String collectLow = "21.6";
|
||||||
|
String collectHigh = "26.4";
|
||||||
|
String number = "1";
|
||||||
|
//每个台站一个月的有效率
|
||||||
|
|
||||||
|
PhdfProvisionEfficiency efficiency = new PhdfProvisionEfficiency();
|
||||||
|
List<Integer> sts = stationList.stream()
|
||||||
|
.map(GardsStations::getStationId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
efficiency.setStationId(sts);
|
||||||
|
efficiency.setNumber(number);
|
||||||
|
efficiency.setCollectHigh(collectHigh);
|
||||||
|
efficiency.setLiveHigh(liveHigh);
|
||||||
|
efficiency.setCollectLow(collectLow);
|
||||||
|
efficiency.setLiveLow(liveLow);
|
||||||
|
efficiency.setQuantity(quantity);
|
||||||
|
efficiency.setCurDateTime(endTime);
|
||||||
|
efficiency.setPretime(startTime);
|
||||||
|
//查询数据库 获取台站有效率
|
||||||
|
List<ProvisionData> rawDataList =
|
||||||
|
imsDataMonitorMapper.findPhdfParticulateEfficiency(efficiency);
|
||||||
|
//dataMap.put(station.getStationCode(), rawDataList);
|
||||||
|
return rawDataList;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String[] getDataTime(Date startDate, Date endDate) {
|
||||||
|
|
||||||
|
// 使用final确保不可变性,提供更好的线程安全性
|
||||||
|
final LocalDateTime currentTime = LocalDateTime.now();
|
||||||
|
|
||||||
|
// 计算默认时间范围
|
||||||
|
final LocalDateTime defaultStartTime = currentTime.minusDays(30);
|
||||||
|
final LocalDateTime defaultEndTime = currentTime;
|
||||||
|
|
||||||
|
// 定义时间格式器常量(避免重复创建)
|
||||||
|
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
|
||||||
|
// 处理开始时间
|
||||||
|
String startTime = Objects.isNull(startDate)
|
||||||
|
? defaultStartTime.format(formatter)
|
||||||
|
: DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00";
|
||||||
|
|
||||||
|
// 处理结束时间
|
||||||
|
String endTime = Objects.isNull(endDate)
|
||||||
|
? defaultEndTime.format(formatter)
|
||||||
|
: DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59";
|
||||||
|
|
||||||
|
return new String[] {startTime, endTime};
|
||||||
|
}
|
||||||
|
|
||||||
|
//endregion
|
||||||
|
|
||||||
|
//region SPALAX
|
||||||
|
@Override
|
||||||
|
public List<ProvisionData> getSpalax(String code, Date startDate, Date endDate) {
|
||||||
|
String actualCode = (code == null || code.trim().isEmpty()) ? "SPALAX" : code;
|
||||||
|
//获取Particulate类型的台站信息
|
||||||
|
List<GardsStations> stations = imsDataMonitorMapper.findEfficStationList(actualCode);
|
||||||
|
String[] times = getDataTime(startDate, endDate);
|
||||||
|
//有效率状态
|
||||||
|
return getSpalaxStationDailyData(stations, times[0], times[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ProvisionData> getSpalaxStationDailyData(List<GardsStations> stationList,
|
||||||
|
String startTime, String endTime) {
|
||||||
|
|
||||||
|
if (CollectionUtil.isEmpty(stationList)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String liveLow = "10";
|
||||||
|
String liveHigh = "11";
|
||||||
|
String quantity = "10";
|
||||||
|
String collectLow = "10.8";
|
||||||
|
String collectHigh = "13.2";
|
||||||
|
String number = "4";
|
||||||
|
String liveqc = "240";
|
||||||
|
//每个台站一个月的有效率
|
||||||
|
|
||||||
|
PhdfProvisionEfficiency efficiency = new PhdfProvisionEfficiency();
|
||||||
|
List<Integer> sts = stationList.stream()
|
||||||
|
.map(GardsStations::getStationId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
efficiency.setStationId(sts);
|
||||||
|
efficiency.setNumber(number);
|
||||||
|
efficiency.setCollectHigh(collectHigh);
|
||||||
|
efficiency.setLiveHigh(liveHigh);
|
||||||
|
efficiency.setCollectLow(collectLow);
|
||||||
|
efficiency.setLiveLow(liveLow);
|
||||||
|
efficiency.setQuantity(quantity);
|
||||||
|
efficiency.setCurDateTime(endTime);
|
||||||
|
efficiency.setPretime(startTime);
|
||||||
|
efficiency.setLiveQc(liveqc);
|
||||||
|
//查询数据库 获取台站有效率
|
||||||
|
List<ProvisionData> rawDataList =
|
||||||
|
imsDataMonitorMapper.findPhdfSpalaxEfficiency(efficiency);
|
||||||
|
//dataMap.put(station.getStationCode(), rawDataList);
|
||||||
|
return rawDataList;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//endregion
|
||||||
|
|
||||||
|
//region SAUNA II
|
||||||
|
@Override
|
||||||
|
public List<ProvisionData> getSauna2(String code, Date startDate, Date endDate) {
|
||||||
|
String actualCode = (code == null || code.trim().isEmpty()) ? "SAUNA2" : code;
|
||||||
|
//获取Particulate类型的台站信息
|
||||||
|
List<GardsStations> stations = imsDataMonitorMapper.findEfficStationList(actualCode);
|
||||||
|
String[] times = getDataTime(startDate, endDate);
|
||||||
|
//有效率状态
|
||||||
|
return getSauna2StationDailyData(stations, times[0], times[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ProvisionData> getSauna2StationDailyData(List<GardsStations> stationList,
|
||||||
|
String startTime, String endTime) {
|
||||||
|
|
||||||
|
if (CollectionUtil.isEmpty(stationList)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String collectLow = "5.4";
|
||||||
|
String collectHigh = "6.6";
|
||||||
|
String liveLow = "4.2";
|
||||||
|
String liveHigh = "6.6";
|
||||||
|
String quantity = "10";
|
||||||
|
String xeVolume = "0.87";
|
||||||
|
String mdc = "1";
|
||||||
|
String nuclideName = "Xe133";
|
||||||
|
String liveQc = "600";
|
||||||
|
String number = "16";
|
||||||
|
//每个台站一个月的有效率
|
||||||
|
|
||||||
|
PhdfProvisionEfficiency efficiency = new PhdfProvisionEfficiency();
|
||||||
|
List<Integer> sts = stationList.stream()
|
||||||
|
.map(GardsStations::getStationId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
efficiency.setStationId(sts);
|
||||||
|
efficiency.setNumber(number);
|
||||||
|
efficiency.setCollectHigh(collectHigh);
|
||||||
|
efficiency.setLiveHigh(liveHigh);
|
||||||
|
efficiency.setCollectLow(collectLow);
|
||||||
|
efficiency.setLiveLow(liveLow);
|
||||||
|
efficiency.setQuantity(quantity);
|
||||||
|
efficiency.setCurDateTime(endTime);
|
||||||
|
efficiency.setPretime(startTime);
|
||||||
|
efficiency.setNuclideName(nuclideName);
|
||||||
|
efficiency.setMdc(mdc);
|
||||||
|
efficiency.setLiveQc(liveQc);
|
||||||
|
efficiency.setXeVolume(xeVolume);
|
||||||
|
//查询数据库 获取台站有效率
|
||||||
|
List<ProvisionData> rawDataList =
|
||||||
|
imsDataMonitorMapper.findPhdfSauna2Efficiency(efficiency);
|
||||||
|
//dataMap.put(station.getStationCode(), rawDataList);
|
||||||
|
return rawDataList;
|
||||||
|
|
||||||
|
}
|
||||||
|
//endregion
|
||||||
|
|
||||||
|
//region SAUNA III
|
||||||
|
@Override
|
||||||
|
public List<ProvisionData> getSauna3(String code, Date startDate, Date endDate) {
|
||||||
|
String actualCode = (code == null || code.trim().isEmpty()) ? "SAUNA3" : code;
|
||||||
|
//获取Particulate类型的台站信息
|
||||||
|
List<GardsStations> stations = imsDataMonitorMapper.findEfficStationList(actualCode);
|
||||||
|
String[] times = getDataTime(startDate, endDate);
|
||||||
|
//有效率状态
|
||||||
|
return getSauna2StationDailyData(stations, times[0], times[1]);
|
||||||
|
}
|
||||||
|
//endregion
|
||||||
|
}
|
||||||
|
|
@ -5,12 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.http.client.utils.URIBuilder;
|
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.common.properties.HttpClientHostProperties;
|
import org.jeecg.common.properties.HttpClientHostProperties;
|
||||||
import org.jeecg.sysEmail.entity.SysEmail;
|
import org.jeecg.sysEmail.entity.SysEmail;
|
||||||
import org.jeecg.utils.HttpClientUtil;
|
import org.jeecg.utils.HttpClientUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
@ -18,15 +16,11 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.IntStream;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/sysEmail")
|
@RequestMapping("/sysEmail")
|
||||||
|
|
|
||||||
23584
jeecg-module-large-screen/src/main/resources/Particulate.json
Normal file
23584
jeecg-module-large-screen/src/main/resources/Particulate.json
Normal file
File diff suppressed because it is too large
Load Diff
288
jeecg-module-large-screen/src/main/resources/Sanua3.json
Normal file
288
jeecg-module-large-screen/src/main/resources/Sanua3.json
Normal file
|
|
@ -0,0 +1,288 @@
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"message": "",
|
||||||
|
"code": 200,
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-31"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-07"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 4,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 25,
|
||||||
|
"collectStart": "2025-11-08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-07"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-17"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-22"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-23"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-26"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-28"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-30"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1768792471998
|
||||||
|
}
|
||||||
288
jeecg-module-large-screen/src/main/resources/Sauna2.json
Normal file
288
jeecg-module-large-screen/src/main/resources/Sauna2.json
Normal file
|
|
@ -0,0 +1,288 @@
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"message": "",
|
||||||
|
"code": 200,
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-31"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-07"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 4,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 25,
|
||||||
|
"collectStart": "2025-11-08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 2,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 12.5,
|
||||||
|
"collectStart": "2025-11-09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-07"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-17"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-22"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-23"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-26"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-28"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "JPX38",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-12-30"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1768792471998
|
||||||
|
}
|
||||||
596
jeecg-module-large-screen/src/main/resources/Spalax.json
Normal file
596
jeecg-module-large-screen/src/main/resources/Spalax.json
Normal file
|
|
@ -0,0 +1,596 @@
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"message": "",
|
||||||
|
"code": 200,
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-09-30"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-09-30"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-09-30"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-07"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-07"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-07"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-17"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-17"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-22"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-22"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-22"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-23"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-23"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-23"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "DEX33",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-26"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-26"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-27"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-28"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-28"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CMX13",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-30"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"stationCode": "CNX20",
|
||||||
|
"dataNumber": 0,
|
||||||
|
"dataRate": 0,
|
||||||
|
"dataEfficiency": 0,
|
||||||
|
"collectStart": "2025-10-30"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1768791911932
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user