Merge remote-tracking branch 'origin/master'

This commit is contained in:
hekaiyu 2026-01-24 21:22:36 +08:00
commit afbdb9f8dd
28 changed files with 25941 additions and 176 deletions

View File

@ -8,14 +8,9 @@ import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.*;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.*;
/**
* 类描述时间操作定义类
@ -50,24 +45,27 @@ public class DateUtils extends PropertyEditorSupport {
return new SimpleDateFormat("yyyy-MM-dd HH:mm");
}
};
public static ThreadLocal<SimpleDateFormat> yyyymmddhhmmss = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyyMMddHHmmss");
}
};
public static ThreadLocal<SimpleDateFormat> short_time_sdf = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("HH:mm");
}
};
public static ThreadLocal<SimpleDateFormat> datetimeFormat = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
public static ThreadLocal<SimpleDateFormat> yyyymmddhhmmss =
new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyyMMddHHmmss");
}
};
public static ThreadLocal<SimpleDateFormat> short_time_sdf =
new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("HH:mm");
}
};
public static ThreadLocal<SimpleDateFormat> datetimeFormat =
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
* @return
*/
@ -121,8 +120,8 @@ public class DateUtils extends PropertyEditorSupport {
public static Date getDate() {
return new Date();
}
/**
* 当前日期
*
@ -227,7 +226,7 @@ public class DateUtils extends PropertyEditorSupport {
/**
* 日期转换为字符串
*
* @param date 日期
* @param date 日期
* @param dateSdf 日期格式
* @return 字符串
*/
@ -585,7 +584,8 @@ public class DateUtils extends PropertyEditorSupport {
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;
cal = parseCalendar(src, pattern);
cal.add(Calendar.DATE, amount);
@ -669,10 +669,12 @@ public class DateUtils extends PropertyEditorSupport {
} else if (text.indexOf(SymbolConstant.COLON) > 0 && text.length() == length19) {
setValue(DateUtils.datetimeFormat.get().parse(text));
} 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) {
IllegalArgumentException iae = new IllegalArgumentException("Could not parse date: " + ex.getMessage());
IllegalArgumentException iae =
new IllegalArgumentException("Could not parse date: " + ex.getMessage());
iae.initCause(ex);
throw iae;
}
@ -689,13 +691,14 @@ public class DateUtils extends PropertyEditorSupport {
/**
* 将字符串转成时间
*
* @param str
* @return
*/
public static Date parseDatetime(String str){
public static Date parseDatetime(String str) {
try {
return datetimeFormat.get().parse(str);
}catch (Exception e){
} catch (Exception e) {
}
return null;
}
@ -716,8 +719,10 @@ public class DateUtils extends PropertyEditorSupport {
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
boolean isSameMonth = isSameYear && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
return isSameMonth && calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH);
boolean isSameMonth =
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();
// 将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);
@ -752,7 +758,8 @@ public class DateUtils extends PropertyEditorSupport {
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 将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);
return daysDifference;
@ -774,7 +781,8 @@ public class DateUtils extends PropertyEditorSupport {
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
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);
}
/**
* 获取指定年月的所有日期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;
}
}

View File

@ -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;
}

View File

@ -53,24 +53,32 @@ public class GardsCorrectionFactor implements Serializable {
@TableField(value = "TOTAL_EFFICIENCY")
private Double totalEfficiency;
/**
* 能量
*/
@Excel(name = "能量", width = 20, height = 20, orderNum = "4")
@TableField(value = "ENERGY")
private Double energy;
/**
* 校正因子
*/
@Excel(name = "校正因子", width = 20, height = 20, orderNum = "4")
@Excel(name = "校正因子", width = 20, height = 20, orderNum = "5")
@TableField(value = "CORRECTION_FACTOR")
private Double correctionFactor;
/**
* 制造商
*/
@Excel(name = "制造商", width = 20, height = 20, orderNum = "5")
@Excel(name = "制造商", width = 20, height = 20, orderNum = "6")
@TableField(value = "MANUFACTURER")
private String manufacturer;
/**
* 型号
*/
@Excel(name = "型号", width = 20, height = 20, orderNum = "6")
@Excel(name = "型号", width = 20, height = 20, orderNum = "7")
@TableField(value = "MODEL")
private String model;

View File

@ -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> {
}

View File

@ -39,10 +39,14 @@ public class DataAnalysisController {
*/
@GetMapping("/getSampleMonitorResult")
@ApiOperation(value = "样品监测结果回放", notes = "样品监测结果回放")
public Result getSampleMonitorResult(String sampleType, Integer dataSource, @RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
public Result getSampleMonitorResult(String sampleType, Integer dataSource,
@RequestParam("startDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
return sampleStatAnalysisService.getSampleMonitorResult(sampleType, dataSource, startDate, endDate);
return sampleStatAnalysisService.getSampleMonitorResult(sampleType, dataSource, startDate,
endDate);
}
/*** 样品统计分析
@ -55,23 +59,30 @@ public class DataAnalysisController {
*/
@GetMapping("/getSampleStatAnalysis")
@ApiOperation(value = "样品统计分析", notes = "样品统计分析")
public Result getSampleStatAnalysis(String station, Integer dataSource, @RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
return sampleStatAnalysisService.getSampleStatAnalysis(station, dataSource, startDate, endDate);
public Result getSampleStatAnalysis(String station, Integer dataSource,
@RequestParam("startDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
return sampleStatAnalysisService.getSampleStatAnalysis(station, dataSource, startDate,
endDate);
}
@GetMapping("/getNuclideActConcChartData")
@ApiOperation(value = "样品统计分析-核素等级时序分析", notes = "样品统计分析-核素等级时序分析")
public Result getNuclideActConcChartData(@RequestParam("sampleType")String sampleType,
@RequestParam("station") String station,
@RequestParam("nuclideName") String nuclideName,
@RequestParam("dataSource") Integer dataSource,
@RequestParam("startDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) throws JsonProcessingException {
return sampleStatAnalysisService.getNuclideActConcChartData(sampleType,station, nuclideName, dataSource, startDate, endDate);
public Result<?> getNuclideActConcChartData(
@RequestParam(value = "sampleType") String sampleType,
@RequestParam("station") String station,
@RequestParam("nuclideName") String nuclideName,
@RequestParam("dataSource") Integer dataSource,
@RequestParam("startDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate)
throws JsonProcessingException {
return sampleStatAnalysisService.getNuclideActConcChartData(sampleType, station,
nuclideName, dataSource, startDate, endDate);
}
@ -86,9 +97,14 @@ public class DataAnalysisController {
*/
@GetMapping("/getSampleGradeAnalysis")
@ApiOperation(value = "样品等级时序分析", notes = "样品等级时序分析")
public Result getSampleGradeAnalysis(String sampleType, String station, Integer dataSource, @RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
Result result = sampleStatAnalysisService.getSampleGradeAnalysis(sampleType, station, startDate, endDate, dataSource);
public Result getSampleGradeAnalysis(String sampleType, String station, Integer dataSource,
@RequestParam("startDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
Result result =
sampleStatAnalysisService.getSampleGradeAnalysis(sampleType, station, startDate,
endDate, dataSource);
return result;
}
@ -105,10 +121,17 @@ public class DataAnalysisController {
*/
@GetMapping("/getActConcIntvlAnalysis")
@ApiOperation(value = "样品活度浓度区间频率分析", notes = "样品活度浓度区间频率分析")
public Result getSampleActConcIntvlAnalysis(String sampleType, String station, String nuclideName, Integer dataSource, @RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
public Result getSampleActConcIntvlAnalysis(String sampleType, String station,
String nuclideName, Integer dataSource,
@RequestParam("startDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date startDate,
@RequestParam("endDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date endDate) {
return sampleStatAnalysisService.getSampleActConcIntvlAnalysis(sampleType, station, nuclideName, dataSource, startDate, endDate);
return sampleStatAnalysisService.getSampleActConcIntvlAnalysis(sampleType, station,
nuclideName, dataSource, startDate, endDate);
}
/*** 样品活度浓度时序分析
@ -123,10 +146,17 @@ public class DataAnalysisController {
*/
@GetMapping("/getActConcTimeSeqAnalysis")
@ApiOperation(value = "样品活度浓度时序分析", notes = "样品活度浓度时序分析")
public Result getSampleActConcTimeSeqAnalysis(String sampleType, String station, String nuclideName, Integer dataSource, @RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) throws JsonProcessingException {
public Result getSampleActConcTimeSeqAnalysis(String sampleType, String station,
String nuclideName, Integer dataSource,
@RequestParam("startDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date startDate,
@RequestParam("endDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date endDate) throws JsonProcessingException {
//return sampleStatAnalysisService.getSampleActConcTimeSeqAnalysis(sampleType, station, nuclideName, dataSource, startDate, endDate);
return sampleStatAnalysisService.getNuclideActConcChartData(sampleType, station, nuclideName, dataSource, startDate, endDate);
return sampleStatAnalysisService.getNuclideActConcChartData(sampleType, station,
nuclideName, dataSource, startDate, endDate);
}
/*** 核素活度浓度对比分析
@ -141,9 +171,16 @@ public class DataAnalysisController {
*/
@GetMapping("/getNuclideActivityConcAnalyze")
@ApiOperation(value = "核素活度浓度对比分析", notes = "核素活度浓度对比分析")
public Result getNuclideActivityConcAnalyze(String sampleType, Integer[] stationIds, String nuclideName, Integer dataSource, @RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
return sampleStatAnalysisService.getNuclideActivityConcAnalyze(sampleType, stationIds, nuclideName, dataSource, startDate, endDate);
public Result getNuclideActivityConcAnalyze(String sampleType, Integer[] stationIds,
String nuclideName, Integer dataSource,
@RequestParam("startDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date startDate,
@RequestParam("endDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date endDate) {
return sampleStatAnalysisService.getNuclideActivityConcAnalyze(sampleType, stationIds,
nuclideName, dataSource, startDate, endDate);
}
@ -151,7 +188,8 @@ public class DataAnalysisController {
public Result findStationList(String systemType) {
Result result = new Result();
try {
List<GardsStations> gardsStations = sampleStatAnalysisService.findStationListByMenuName(systemType);
List<GardsStations> gardsStations =
sampleStatAnalysisService.findStationListByMenuName(systemType);
result.setCode(200);
result.setSuccess(true);
result.setResult(gardsStations);
@ -166,7 +204,8 @@ public class DataAnalysisController {
public Result findNuclideList(String systemType) {
Result result = new Result();
try {
List<SysDefaultNuclide> defaultNuclides = sampleStatAnalysisService.findNuclideList(systemType);
List<SysDefaultNuclide> defaultNuclides =
sampleStatAnalysisService.findNuclideList(systemType);
result.setCode(200);
result.setSuccess(true);
result.setResult(defaultNuclides);

View File

@ -20,7 +20,7 @@ public enum SystemType {
this.type = type;
}
public String getType(){
public String getType() {
return this.type;
}

View File

@ -13,25 +13,32 @@ public interface GardsSampleStatAnalysisMapper extends BaseMapper<GardsSampleDat
List<GardsSampleData> getSampleStatAnalysis(String station, String startDate, String endDate);
List<ThresholdMetric> selectByStationIds(@Param("stationIds") List<String> stationIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<ThresholdMetric> selectByStationIds(@Param("stationIds") List<String> stationIds,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
//region 样品等级时序分析
List<GardsSampleData> getSampleGradeAnalysis(String sampleType, String station,
@Param("startTime") String startTime, @Param("endTime") String endTime, Integer dataSource);
@Param("startTime") String startTime,
@Param("endTime") String endTime,
Integer dataSource);
List<SampleLevelData> getRnAutoSampleGradeAnalysis(String sampleType, String station,
@Param("startTime") String startTime, @Param("endTime") String endTime);
@Param("startTime") String startTime,
@Param("endTime") String endTime);
List<SampleLevelData> getRnManSampleGradeAnalysis(String sampleType, String station,
@Param("startTime") String startTime, @Param("endTime") String endTime);
@Param("startTime") String startTime,
@Param("endTime") String endTime);
List<NuclideActConcIntvl> getIdentifiedNuclides(@Param("schemaName") String schemaName ,@Param("nuclideName")String nuclideName, String station,
@Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getIdentifiedNuclides(@Param("schemaName") String schemaName,
@Param("nuclideName") String nuclideName,
String station,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
//endregion
@ -43,18 +50,24 @@ public interface GardsSampleStatAnalysisMapper extends BaseMapper<GardsSampleDat
* @param endTime 结束时间
* @return 返回List<NuclideActConcIntvl>
*/
List<NuclideActConcIntvl> getSamplePNuclideActConcIntvl(String station, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getSamplePNuclideActConcIntvl(String station,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
//region 获取样品的级别和阈值
List<SampleLevelData> getRnAutoSampleLevel(String station, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<SampleLevelData> getRnAutoSampleLevel(String station, @Param("startTime") String startTime,
@Param("endTime") String endTime);
List<SampleLevelData> getRnManSampleLevel(String station, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<SampleLevelData> getNuclideTimeSeriesAnalysis (@Param("schemaName") String schemaName ,@Param("station")String station,@Param("nuclideName")String nuclideName, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<SampleLevelData> getRnManSampleLevel(String station, @Param("startTime") String startTime,
@Param("endTime") String endTime);
List<SampleLevelData> getNuclideTimeSeriesAnalysis(@Param("schemaName") String schemaName,
@Param("station") String station,
@Param("nuclideName") String nuclideName,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
//endregion
@ -68,7 +81,10 @@ public interface GardsSampleStatAnalysisMapper extends BaseMapper<GardsSampleDat
* @param endTime 结束时间
* @return 返回List<NuclideActConcIntvl>
*/
List<NuclideActConcIntvl> getRnautoPNuclideActConcIntvl(String sampleType, String station, String nuclideName, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnautoPNuclideActConcIntvl(String sampleType, String station,
String nuclideName,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/*** 获取样品中元素的浓度活度MDC信息
* 查询RNAUTO.GARDS_XE_RESULTS中的活度浓度MDC信息
@ -77,7 +93,19 @@ public interface GardsSampleStatAnalysisMapper extends BaseMapper<GardsSampleDat
* @param endTime
* @return
*/
List<NuclideActConcIntvl> getRnautoNuclideActConcIntvl(String sampleType, String station, String nuclideName, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnautoNuclideActConcIntvl(String sampleType, String station,
String nuclideName,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
*
* @param schemaName
* @return
*/
List<NuclideActConcIntvl>getNuclideActConcIntvl(@Param("schemaName") String schemaName);
//endregion
@ -91,7 +119,10 @@ public interface GardsSampleStatAnalysisMapper extends BaseMapper<GardsSampleDat
* @param endTime 结束时间
* @return 返回List<NuclideActConcIntvl>
*/
List<NuclideActConcIntvl> getRnmanPNuclideActConcIntvl(String sampleType, String station, String nuclideName, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnmanPNuclideActConcIntvl(String sampleType, String station,
String nuclideName,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/*** 获取样品中元素的浓度活度MDC信息
* 查询RNAUTO.GARDS_XE_RESULTS中的活度浓度MDC信息
@ -100,36 +131,46 @@ public interface GardsSampleStatAnalysisMapper extends BaseMapper<GardsSampleDat
* @param endTime
* @return
*/
List<NuclideActConcIntvl> getRnmanNuclideActConcIntvl(String sampleType, String station, String nuclideName, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnmanNuclideActConcIntvl(String sampleType, String station,
String nuclideName,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
//endregion
//region 样品统计分析
/**
* RnAuto--获取样品中识别到的核素集合
*/
List<NuclideActConcIntvl> getRnAutoIdentifiedNuclides(String station, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnAutoIdentifiedNuclides(String station,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
* RnAuto-- 核素等级时序分析
*/
List<SampleLevelData> getRnAutoNuclideTimeSeriesAnalysis(String station, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<SampleLevelData> getRnAutoNuclideTimeSeriesAnalysis(String station,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
* RnMan--获取样品中识别到的核素集合
*/
List<NuclideActConcIntvl> getRnManIdentifiedNuclides(String station, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnManIdentifiedNuclides(String station,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
* RnMan--核素等级时序分析
*
* @return List<SampleLevelData>
*/
List<SampleLevelData> getRnManNuclideTimeSeriesAnalysis(String station, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<SampleLevelData> getRnManNuclideTimeSeriesAnalysis(String station,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
@ -213,22 +254,32 @@ public interface GardsSampleStatAnalysisMapper extends BaseMapper<GardsSampleDat
//endregion
//region 核素活度浓度对比分析
List<NuclideActConcIntvl> getRnAutoAnalyzeNuclideActivityConc(@Param("sampleType")String sampleType, @Param("nuclideName")String nuclideName, @Param("stationIds") Integer[] stationIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnAutoAnalyzeNuclideActivityConc(
@Param("sampleType") String sampleType, @Param("nuclideName") String nuclideName,
@Param("stationIds") Integer[] stationIds, @Param("startTime") String startTime,
@Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnManAnalyzeNuclideActivityConc(@Param("sampleType")String sampleType, @Param("nuclideName")String nuclideName, @Param("stationIds") Integer[] stationIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<NuclideActConcIntvl> getRnManAnalyzeNuclideActivityConc(
@Param("sampleType") String sampleType, @Param("nuclideName") String nuclideName,
@Param("stationIds") Integer[] stationIds, @Param("startTime") String startTime,
@Param("endTime") String endTime);
//endregion
//region 样品监测结果
List<StationInfoData> getRnAutoSampleResult( String sampleType, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<StationInfoData> getRnAutoSampleResult(String sampleType,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
List<StationInfoData> getRnManSampleResult(String sampleType, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<StationInfoData> getRnManSampleResult(String sampleType,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
//endregion
//region 查询台站信息
List<GardsStations> findStationListByMenuName(@Param("systemType")String systemType);
List<GardsStations> findStationListByMenuName(@Param("systemType") String systemType);
//endregion
}

View File

@ -28,6 +28,7 @@ import java.text.SimpleDateFormat;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
@Slf4j
@ -57,7 +58,7 @@ public class SampleStatAnalysisService
result.setCode(CommonConstant.SC_OK_200);
//声明返回用的结果map
Map<String, Object> resultMap = new HashMap<>();
List<StationInfoData> StationInfoDataList = new ArrayList<>();
List<StationInfoData> stationInfoDataList = new ArrayList<>();
//region 局部变量
if (StringUtils.isBlank(sampleType)) {
@ -78,26 +79,19 @@ public class SampleStatAnalysisService
switch (dataSource) {
case 1:
StationInfoDataList =
stationInfoDataList =
this.baseMapper.getRnAutoSampleResult(sampleType, startTime, endTime);
break;
case 2:
StationInfoDataList =
stationInfoDataList =
this.baseMapper.getRnManSampleResult(sampleType, startTime, endTime);
break;
default:
stationInfoDataList = new ArrayList<>();
}
//获取台站信息
// Map<String, StationInfoVO> stationInfo =
// StationInfoDataList.stream().collect(
// Collectors.toMap(StationInfoData::getStationCode,
// station ->
// new StationInfoVO(station.getStationCode(), station.getLon(),station.getLat()),
// (existing, replacement) -> existing)
//
// );
Set<StationInfoVO> stationInfoSet = StationInfoDataList.stream()
Set<StationInfoVO> stationInfoSet = stationInfoDataList.stream()
.map(station -> new StationInfoVO(
station.getStationCode(),
station.getLon(),
@ -106,22 +100,22 @@ public class SampleStatAnalysisService
.collect(Collectors.toSet());
List<StationInfoData> sortedList = StationInfoDataList.stream()
List<StationInfoData> sortedList = stationInfoDataList.stream()
.sorted(Comparator.comparing(station ->
station.getCollectStop().toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate()
))
.collect(Collectors.toList());
//时间段内有多少台站
//时间段内有多少台站
Map<String, List<Map<String, Object>>> groupedByMonth =
sortedList.stream()
.filter(station -> station.getCollectStop() !=
null) // 过滤 collectStop null 的数据
.filter(station -> station.getStationCode() !=
null) // 过滤 stationCode null 的数据
.filter(station -> station.getCategory() !=
null) // 过滤 category null 的数据
.filter(station -> station.getCollectStop()
!= null) // 过滤 collectStop null 的数据
.filter(station -> station.getStationCode()
!= null) // 过滤 stationCode null 的数据
.filter(station -> station.getCategory()
!= null) // 过滤 category null 的数据
.collect(Collectors.groupingBy(
station -> station.getCollectStop().toInstant()
.atZone(ZoneId.of("UTC"))
@ -148,7 +142,7 @@ public class SampleStatAnalysisService
// 统计 category 出现次数
Map<Integer, Long> categoryCount =
categories.stream()
.filter(Objects::nonNull) // 再次过滤 null防御性编程
.filter(Objects::nonNull) // 再次过滤 null
.collect(
Collectors.groupingBy(
category -> category,
@ -158,7 +152,8 @@ public class SampleStatAnalysisService
new HashMap<>();
categoryCount.forEach(
(category, count) -> {
String levelKey = "level" +
String levelKey = "level"
+
category; // 例如1 "level1"
levelCount.put(levelKey,
count);
@ -335,6 +330,11 @@ public class SampleStatAnalysisService
List<Object[]> thresholdList = new ArrayList<>();
Map<String, List<Object[]>> levelGroup = new HashMap<>();
levelGroup.put("category1", new ArrayList<>());
levelGroup.put("category2", new ArrayList<>());
levelGroup.put("category3", new ArrayList<>());
//levelGroup.put("category4", new ArrayList<>());
for (NuclideActConcIntvl item : rawList) {
String timeStr = sdf.format(item.getCollectStop());
mdcList.add(new Object[] {timeStr, item.getMdc()});
@ -344,9 +344,9 @@ public class SampleStatAnalysisService
int cat = item.getCategory();
String categoryStr = "category" + cat;
levelGroup.putIfAbsent(categoryStr, new ArrayList<>());
//double err = item.getConcErr() != null ? item.getConcErr() : 0;
double err = item.getConcErr() != null ? item.getConcErr() : 0;
//TODO 测试数据
double err = 15;
//double err = 15;
levelGroup.get(categoryStr).add(new Object[] {timeStr, item.getConc(), err, err});
// if (cat == 3) {
// // 3级: 携带误差维度 [时间, 活度, ConcErr , $Conc+ConcErr]
@ -3229,8 +3229,10 @@ public class SampleStatAnalysisService
});
result.setSuccess(true);
result.setResult(resultData);
return resultData;
//result.setResult(resultData);
//return resultData;
result.setResult(dataMap);
return result;
}
@ -3309,7 +3311,6 @@ public class SampleStatAnalysisService
* @return 返回样品活度浓度区间信息
*/
@Override
public Result getSampleActConcIntvlAnalysis(String sampleType, String station,
String nuclideName, Integer dataSource,
Date startDate, Date endDate) {
@ -3342,54 +3343,49 @@ public class SampleStatAnalysisService
return result;
}
String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59";
String schemaName = dataSource == 1 ? "RNAUTO" : "RNMAN";
//endregion
//根据数据源样品类型查询样品的浓度
switch (sampleType) {
case "P":
switch (dataSource) {
//RNAUTO
case 1:
nuclideActConcIntvls =
this.baseMapper.getRnautoPNuclideActConcIntvl(sampleType,
station, nuclideName, startTime, endTime);
break;
//RNAUTO
if (dataSource == 1) {
nuclideActConcIntvls =
this.baseMapper.getRnautoPNuclideActConcIntvl(sampleType,
station, nuclideName, startTime, endTime);
//RNMAN
case 2:
nuclideActConcIntvls =
this.baseMapper.getRnmanPNuclideActConcIntvl(sampleType,
station, nuclideName, startTime, endTime);
break;
} else if (dataSource == 2) {
nuclideActConcIntvls =
this.baseMapper.getRnmanPNuclideActConcIntvl(sampleType,
station, nuclideName, startTime, endTime);
}
break;
case "B":
switch (dataSource) {
case 1:
nuclideActConcIntvls =
this.baseMapper.getRnautoNuclideActConcIntvl(sampleType,
station, nuclideName, startTime, endTime);
break;
case 2:
nuclideActConcIntvls =
this.baseMapper.getRnmanNuclideActConcIntvl(sampleType, station,
nuclideName, startTime, endTime);
break;
if (dataSource == 1) {
nuclideActConcIntvls =
this.baseMapper.getRnautoNuclideActConcIntvl(sampleType,
station, nuclideName, startTime, endTime);
} else if (dataSource == 2) {
nuclideActConcIntvls =
this.baseMapper.getRnmanNuclideActConcIntvl(sampleType, station,
nuclideName, startTime, endTime);
}
break;
}
//获取浓度出现的次数
if (nuclideActConcIntvls.isEmpty()) {
result.error500("查询数据为空");
return result;
}
//获取浓度值集合
List<Double> data =
DistributionAnalysisToolkit.convertConcToDoubleList(nuclideActConcIntvls);
// 设置区间参数
double start = 0; // 区间起始值
double step = 200; // 区间步长宽度
double step = 200; // 区间步长宽度
// 1. 区间统计

View File

@ -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());
}
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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 &lt; ${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 &lt; ${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>

View File

@ -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);
}

View File

@ -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
}

View File

@ -5,12 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.utils.URIBuilder;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.properties.HttpClientHostProperties;
import org.jeecg.sysEmail.entity.SysEmail;
import org.jeecg.utils.HttpClientUtil;
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;
@ -18,15 +16,11 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@RestController
@RequestMapping("/sysEmail")

File diff suppressed because it is too large Load Diff

View 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
}

View 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
}

View 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
}

View File

@ -49,7 +49,7 @@ public class GardsNuclearReactorsController {
@PostMapping("/create")
@Operation(summary = "新增核设施信息")
public Result<?> create(@RequestBody GardsNuclearReactors gardsNuclearReactors) {
gardsNuclearReactorsService.save(gardsNuclearReactors);
gardsNuclearReactorsService.create(gardsNuclearReactors);
return Result.OK("新增成功!");
}
@ -62,7 +62,7 @@ public class GardsNuclearReactorsController {
@DeleteMapping("/delete")
@Operation(summary = "删除核设施信息数据")
public Result<?> delete(@RequestParam Integer id) {
gardsNuclearReactorsService.removeById(id);
gardsNuclearReactorsService.delete(id);
return Result.OK("删除成功!");
}

View File

@ -42,7 +42,7 @@ public class GardsNuclearReleaseController {
@PostMapping("/create")
@Operation(summary = "新增加核设施放射性排放记录信息")
public Result<?> create(@RequestBody GardsNuclearReleaseRecords gardsNuclearReleaseRecords) {
gardsNuclearReleaseService.save(gardsNuclearReleaseRecords);
gardsNuclearReleaseService.create(gardsNuclearReleaseRecords);
return Result.OK("新增成功!");
}
@ -52,7 +52,7 @@ public class GardsNuclearReleaseController {
@DeleteMapping("/delete")
@Operation(summary = "删除核设施放射性排放记录信息")
public Result<?> deleteById(@RequestParam Integer id) {
gardsNuclearReleaseService.removeById(id);
gardsNuclearReleaseService.deleteById(id);
return Result.OK("删除成功!");
}

View File

@ -45,7 +45,7 @@ public class GardsNuclearTestingPlantController {
@PostMapping("/create")
@Operation(summary = "新增核试验信息")
public Result<?> create(@RequestBody GardsNuclearTestingPlant gardsNuclearTestingPlant) {
gardsNuclearTestingPlantService.save(gardsNuclearTestingPlant);
gardsNuclearTestingPlantService.create(gardsNuclearTestingPlant);
return Result.OK("新增成功!");
}
@ -55,7 +55,7 @@ public class GardsNuclearTestingPlantController {
@DeleteMapping("/delete")
@Operation(summary = "删除核试验信息")
public Result<?> deleteById(@RequestParam Integer id) {
gardsNuclearTestingPlantService.removeById(id);
gardsNuclearTestingPlantService.deleteById(id);
return Result.OK("删除成功!");
}

View File

@ -42,7 +42,7 @@ public class GardsNuclideDecayController {
@PostMapping("/create")
@Operation(summary = "新增信息")
public Result<?> create(@RequestBody GardsNuclideDecay gardsNuclideDecay) {
gardsNuclideDecayService.save(gardsNuclideDecay);
gardsNuclideDecayService.create(gardsNuclideDecay);
return Result.OK("新增成功!");
}
@ -52,7 +52,7 @@ public class GardsNuclideDecayController {
@DeleteMapping("/delete")
@Operation(summary = "删除信息")
public Result<?> deleteById(Integer id) {
gardsNuclideDecayService.removeById(id);
gardsNuclideDecayService.deleteById(id);
return Result.OK("删除成功!");
}

View File

@ -42,7 +42,7 @@ public class GardsResearchReactorsController {
@PostMapping("/create")
@Operation(summary = "新增反应堆信息")
public Result<?> create(@RequestBody GardsResearchReactors gardsResearchReactors) {
gardsResearchReactorsService.save(gardsResearchReactors);
gardsResearchReactorsService.create(gardsResearchReactors);
return Result.OK("新增成功!");
}
@ -52,7 +52,7 @@ public class GardsResearchReactorsController {
@DeleteMapping("/delete")
@Operation(summary = "删除反应堆信息")
public Result<?> deleteById(@RequestParam Integer id) {
gardsResearchReactorsService.removeById(id);
gardsResearchReactorsService.deleteById(id);
return Result.OK("删除成功!");
}

View File

@ -41,7 +41,7 @@ public class GardsStationsController {
@PostMapping("/create")
@Operation(summary = "新增台站信息")
public Result<?> create(@RequestBody GardsStations gardsStations) {
gardsStationsService.save(gardsStations);
gardsStationsService.create(gardsStations);
return Result.OK("新增成功!");
}
@ -50,8 +50,8 @@ public class GardsStationsController {
*/
@DeleteMapping("/delete")
@Operation(summary = "删除台站信息")
public Result<?> deleteById(@RequestParam Integer stationId) {
gardsStationsService.removeById(stationId);
public Result<?> deleteById(@RequestParam(required = false) Integer stationId) {
gardsStationsService.deleteById(stationId);
return Result.OK("删除成功!");
}

View File

@ -42,7 +42,13 @@ public class GardsStationsServiceImpl extends ServiceImpl<GardsStationsMapper, G
@Override
@Transactional(rollbackFor = RuntimeException.class)
public void deleteById(Integer stationId) {
this.removeById(stationId);
try {
this.removeById(stationId);
} catch (RuntimeException e) {
throw new RuntimeException("");
}
}
/**