样品统计分析接口添加核素数据校验
This commit is contained in:
		
							parent
							
								
									1f22a04d5c
								
							
						
					
					
						commit
						3b797f58c4
					
				|  | @ -4,6 +4,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; | |||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.toolkit.StringUtils; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import org.apache.commons.collections.CollectionUtils; | ||||
| import org.jeecg.common.api.vo.Result; | ||||
| import org.jeecg.common.constant.CommonConstant; | ||||
| import org.jeecg.common.util.DateUtils; | ||||
|  | @ -30,53 +31,54 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys | |||
| 
 | ||||
|     public Result getSampleMonitorResult(String sampleType, Integer dataSource, Date startDate, Date endDate) { | ||||
|         Result result = new Result(); | ||||
|         result.setCode(CommonConstant.SC_OK_200); | ||||
|         //声明返回用的结果map | ||||
|         Map<String, Object> resultMap = new HashMap<>(); | ||||
|         List<StationInfoData> StationInfoDataList = new ArrayList<>(); | ||||
|         try { | ||||
|             result.setCode(CommonConstant.SC_OK_200); | ||||
|             //声明返回用的结果map | ||||
|             Map<String, Object> resultMap = new HashMap<>(); | ||||
|             List<StationInfoData> StationInfoDataList = new ArrayList<>(); | ||||
| 
 | ||||
|         //region 局部变量 | ||||
|         if (StringUtils.isBlank(sampleType)) { | ||||
|             result.error500("SampleType Code cannot be null"); | ||||
|             //region 局部变量 | ||||
|             if (StringUtils.isBlank(sampleType)) { | ||||
|                 result.error500("SampleType Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             if (Objects.isNull(startDate)) { | ||||
|                 result.error500("The start time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|             if (Objects.isNull(endDate)) { | ||||
|                 result.error500("The end time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|             //endregion | ||||
| 
 | ||||
|             switch (dataSource) { | ||||
|                 case 1: | ||||
|                     StationInfoDataList = this.baseMapper.getRnAutoSampleResult(sampleType, startTime, endTime); | ||||
| 
 | ||||
|                     break; | ||||
|                 case 2: | ||||
|                     StationInfoDataList = this.baseMapper.getRnManSampleResult(sampleType, startTime, endTime); | ||||
| 
 | ||||
|                     break; | ||||
|             } | ||||
|             //时间段内有多少和台站 | ||||
|             Map<String, List<StationInfoData>> groupedByMonth = StationInfoDataList.stream() | ||||
|                     .collect(Collectors.groupingBy(station -> | ||||
|                             station.getCollectStop().toInstant() | ||||
|                                     .atZone(ZoneId.of("UTC")) | ||||
|                                     .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) | ||||
|                     )); | ||||
|             resultMap.put("SampleMonitorResultList", groupedByMonth); | ||||
|             result.setSuccess(true); | ||||
|             result.setResult(resultMap); | ||||
|             return result; | ||||
|         } catch (Exception e) { | ||||
|             result.error500("样品监测回放错误:" + e.getMessage()); | ||||
|             return result; | ||||
|         } | ||||
|         if (Objects.isNull(startDate)) { | ||||
|             result.error500("The start time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|         if (Objects.isNull(endDate)) { | ||||
|             result.error500("The end time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|         //endregion | ||||
| 
 | ||||
|         switch (dataSource) { | ||||
|             case 1: | ||||
|                 StationInfoDataList = this.baseMapper.getRnAutoSampleResult(sampleType, startTime, endTime); | ||||
| 
 | ||||
|                 break; | ||||
|             case 2: | ||||
|                 StationInfoDataList = this.baseMapper.getRnManSampleResult(sampleType, startTime, endTime); | ||||
| 
 | ||||
|                 break; | ||||
|         } | ||||
|         //时间段内有多少和台站 | ||||
| 
 | ||||
|         Map<String, List<StationInfoData>> groupedByMonth = StationInfoDataList.stream() | ||||
|                 .collect(Collectors.groupingBy(station -> | ||||
|                         station.getCollectStop().toInstant() | ||||
|                                 .atZone(ZoneId.of("UTC")) | ||||
|                                 .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) | ||||
|                 )); | ||||
| 
 | ||||
| 
 | ||||
|         resultMap.put("SampleMonitorResultList", groupedByMonth); | ||||
| 
 | ||||
|         result.setSuccess(true); | ||||
|         result.setResult(resultMap); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -98,56 +100,62 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys | |||
|         String schemaName = dataSource == 1 ? "RNAUTO" : "RNMAN"; | ||||
|         //region 局部变量 | ||||
|         Result result = new Result(); | ||||
|         result.setCode(CommonConstant.SC_OK_200); | ||||
|         if (StringUtils.isBlank(stationCode)) { | ||||
|             result.error500("Station Code cannot be null"); | ||||
|         try { | ||||
|             result.setCode(CommonConstant.SC_OK_200); | ||||
|             if (StringUtils.isBlank(stationCode)) { | ||||
|                 result.error500("Station Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             if (Objects.isNull(startDate)) { | ||||
|                 result.error500("The start time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|             if (Objects.isNull(endDate)) { | ||||
|                 result.error500("The end time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|             //endregion | ||||
|             switch (dataSource) { | ||||
|                 //RNAUTO | ||||
|                 case 1: | ||||
|                     //获取样品中识别到的核素集合 | ||||
|                     nuclideActConcIntvlList = this.baseMapper.getRnAutoIdentifiedNuclides(stationCode, startTime, endTime); | ||||
| 
 | ||||
|                     //核素等级时序分析 | ||||
|                     sampleLevelDataList = this.baseMapper.getRnAutoNuclideTimeSeriesAnalysis(stationCode, startTime, endTime); | ||||
|                     break; | ||||
|                 //RNMAN | ||||
|                 case 2: | ||||
|                     //获取样品中识别到的核素集合 | ||||
|                     nuclideActConcIntvlList = this.baseMapper.getRnManIdentifiedNuclides(stationCode, startTime, endTime); | ||||
| 
 | ||||
|                     //核素等级时序分析 | ||||
|                     sampleLevelDataList = this.baseMapper.getRnManNuclideTimeSeriesAnalysis(stationCode, startTime, endTime); | ||||
|                     break; | ||||
|             } | ||||
|             //key=核素名称,value=获取样品中识别到的核素集合 | ||||
|             Map<String, List<NuclideActConcIntvl>> groupedByNuclideName = nuclideActConcIntvlList.stream() | ||||
|                     .filter(p -> p.getNuclideName() != null) | ||||
|                     .collect(Collectors.groupingBy(NuclideActConcIntvl::getNuclideName)); | ||||
|             //查询级别 getSample | ||||
|             List<String> nuclideNames = new ArrayList<>(groupedByNuclideName.keySet()); | ||||
|             if (CollectionUtils.isNotEmpty(nuclideNames)) { | ||||
|                 //通过台站ID、核素名称查找阈值 | ||||
|                 thresholdResultHisDataList = this.baseMapper.selectByStationAndNuclides(schemaName, Integer.valueOf(stationCode), nuclideNames, startTime, endTime); | ||||
|             } | ||||
|             resultMap.put("nuclideActConcIntvlList", groupedByNuclideName); | ||||
|             resultMap.put("sampleLevelDataList", sampleLevelDataList); | ||||
|             resultMap.put("thresholdResultHisDataList", thresholdResultHisDataList); | ||||
|             result.setSuccess(true); | ||||
|             result.setResult(resultMap); | ||||
|             return result; | ||||
|         } catch (Exception e) { | ||||
|             result.error500("样品统计分析错误:" + e.getMessage()); | ||||
|             return result; | ||||
|         } | ||||
|         if (Objects.isNull(startDate)) { | ||||
|             result.error500("The start time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|         if (Objects.isNull(endDate)) { | ||||
|             result.error500("The end time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|         //endregion | ||||
|         switch (dataSource) { | ||||
|             //RNAUTO | ||||
|             case 1: | ||||
|                 //获取样品中识别到的核素集合 | ||||
|                 nuclideActConcIntvlList = this.baseMapper.getRnAutoIdentifiedNuclides(stationCode, startTime, endTime); | ||||
| 
 | ||||
|                 //核素等级时序分析 | ||||
|                 sampleLevelDataList = this.baseMapper.getRnAutoNuclideTimeSeriesAnalysis(stationCode, startTime, endTime); | ||||
|                 break; | ||||
|             //RNMAN | ||||
|             case 2: | ||||
|                 //获取样品中识别到的核素集合 | ||||
|                 nuclideActConcIntvlList = this.baseMapper.getRnManIdentifiedNuclides(stationCode, startTime, endTime); | ||||
| 
 | ||||
|                 //核素等级时序分析 | ||||
|                 sampleLevelDataList = this.baseMapper.getRnManNuclideTimeSeriesAnalysis(stationCode, startTime, endTime); | ||||
|                 break; | ||||
|         } | ||||
|         //key=核素名称,value=获取样品中识别到的核素集合 | ||||
|         Map<String, List<NuclideActConcIntvl>> groupedByNuclideName = nuclideActConcIntvlList.stream() | ||||
|                 .filter(p -> p.getNuclideName() != null) | ||||
|                 .collect(Collectors.groupingBy(NuclideActConcIntvl::getNuclideName)); | ||||
|         //查询级别 getSample | ||||
|         List<String> nuclideNames = new ArrayList<>(groupedByNuclideName.keySet()); | ||||
|         //通过台站ID、核素名称查找阈值 | ||||
|         thresholdResultHisDataList = this.baseMapper.selectByStationAndNuclides(schemaName, Integer.valueOf(stationCode), nuclideNames, startTime, endTime); | ||||
| 
 | ||||
|         resultMap.put("nuclideActConcIntvlList", groupedByNuclideName); | ||||
|         resultMap.put("sampleLevelDataList", sampleLevelDataList); | ||||
|         resultMap.put("thresholdResultHisDataList", thresholdResultHisDataList); | ||||
|         result.setSuccess(true); | ||||
|         result.setResult(resultMap); | ||||
| 
 | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -163,43 +171,46 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys | |||
|         List<SampleLevelData> sampleDataList = new ArrayList<>(); | ||||
|         //region 局部变量 | ||||
|         Result result = new Result(); | ||||
|         result.setCode(CommonConstant.SC_OK_200); | ||||
|         if (StringUtils.isBlank(sampleType)) { | ||||
|             result.error500("SampleType Code cannot be null"); | ||||
|         try { | ||||
|             result.setCode(CommonConstant.SC_OK_200); | ||||
|             if (StringUtils.isBlank(sampleType)) { | ||||
|                 result.error500("SampleType Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             if (StringUtils.isBlank(station)) { | ||||
|                 result.error500("Station Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             if (Objects.isNull(startDate)) { | ||||
|                 result.error500("The start time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|             if (Objects.isNull(endDate)) { | ||||
|                 result.error500("The end time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|             //endregion | ||||
|             switch (dataSource) { | ||||
|                 case 1: | ||||
|                     sampleDataList = this.baseMapper.getRnAutoSampleGradeAnalysis(sampleType, station, startTime, endTime); | ||||
| 
 | ||||
|                     break; | ||||
|                 case 2: | ||||
|                     sampleDataList = this.baseMapper.getRnManSampleGradeAnalysis(sampleType, station, startTime, endTime); | ||||
|                     break; | ||||
| 
 | ||||
|             } | ||||
| 
 | ||||
|             resultMap.put("sampleDataList", sampleDataList); | ||||
|             result.setSuccess(true); | ||||
|             result.setResult(resultMap); | ||||
|             return result; | ||||
|         } catch (Exception e) { | ||||
|             result.error500("样品统计分析错误:" + e.getMessage()); | ||||
|             return result; | ||||
|         } | ||||
|         if (StringUtils.isBlank(station)) { | ||||
|             result.error500("Station Code cannot be null"); | ||||
|             return result; | ||||
|         } | ||||
|         if (Objects.isNull(startDate)) { | ||||
|             result.error500("The start time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|         if (Objects.isNull(endDate)) { | ||||
|             result.error500("The end time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|         //endregion | ||||
|         switch (dataSource) { | ||||
|             case 1: | ||||
|                 sampleDataList = this.baseMapper.getRnAutoSampleGradeAnalysis(sampleType, station, startTime, endTime); | ||||
| 
 | ||||
|                 break; | ||||
|             case 2: | ||||
|                 sampleDataList = this.baseMapper.getRnManSampleGradeAnalysis(sampleType, station, startTime, endTime); | ||||
|                 break; | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         resultMap.put("sampleDataList", sampleDataList); | ||||
|         result.setSuccess(true); | ||||
|         result.setResult(resultMap); | ||||
| 
 | ||||
| 
 | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     /*** 样品活度浓度区间频率分析 | ||||
|  | @ -219,86 +230,92 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys | |||
|         List<NuclideActConcIntvl> nuclideActConcIntvls = new ArrayList<>(); | ||||
|         //region 局部变量 | ||||
|         Result result = new Result(); | ||||
|         result.setCode(CommonConstant.SC_OK_200); | ||||
|         if (StringUtils.isBlank(sampleType)) { | ||||
|             result.error500("SampleType Code cannot be null"); | ||||
|         try { | ||||
|             result.setCode(CommonConstant.SC_OK_200); | ||||
|             if (StringUtils.isBlank(sampleType)) { | ||||
|                 result.error500("SampleType Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             if (StringUtils.isBlank(nuclideName)) { | ||||
|                 result.error500("nuclideName Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             if (StringUtils.isBlank(station)) { | ||||
|                 result.error500("Station Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             if (Objects.isNull(startDate)) { | ||||
|                 result.error500("The start time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|             if (Objects.isNull(endDate)) { | ||||
|                 result.error500("The end time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|             //endregion | ||||
| 
 | ||||
|             //根据数据源、样品类型查询样品的浓度 | ||||
|             switch (sampleType) { | ||||
|                 case "P": | ||||
|                     switch (dataSource) { | ||||
|                         //RNAUTO | ||||
|                         case 1: | ||||
|                             nuclideActConcIntvls = this.baseMapper.getRnautoPNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                             break; | ||||
|                         //RNMAN | ||||
|                         case 2: | ||||
|                             nuclideActConcIntvls = this.baseMapper.getRnautoNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                             break; | ||||
|                     } | ||||
|                     break; | ||||
|                 case "B": | ||||
|                     switch (dataSource) { | ||||
|                         case 1: | ||||
|                             nuclideActConcIntvls = this.baseMapper.getRnmanPNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                             break; | ||||
|                         case 2: | ||||
|                             nuclideActConcIntvls = this.baseMapper.getRnmanNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                             break; | ||||
| 
 | ||||
|                     } | ||||
|                     break; | ||||
| 
 | ||||
|             } | ||||
| 
 | ||||
|             //获取浓度出现的次数 | ||||
|             //获取浓度值集合 | ||||
|             List<Double> data = DistributionAnalysisToolkit.convertConcToDoubleList(nuclideActConcIntvls); | ||||
|             // 设置区间参数 | ||||
|             double start = 0;          // 区间起始值 | ||||
|             double step = 200;          // 区间步长(宽度) | ||||
| 
 | ||||
| 
 | ||||
|             // 1. 区间统计 | ||||
|             List<DistributionAnalysisToolkit.IntervalStat> stats = DistributionAnalysisToolkit.calculateIntervalStats(nuclideActConcIntvls, start, step); | ||||
|             // 3. 累积分布函数 | ||||
|             List<DistributionAnalysisToolkit.CDFPoint> cdfPoints = DistributionAnalysisToolkit.calculateCDF(data); | ||||
|             // 4. 核密度估计 | ||||
|             List<DistributionAnalysisToolkit.KDEPoint> kdePoints = DistributionAnalysisToolkit.autoKDE(data, DistributionAnalysisToolkit.GAUSSIAN_KERNEL); | ||||
|             //获取所有浓度的累积 | ||||
|             List<Double> cumulative = DistributionAnalysisToolkit.cumulativeSum(data); | ||||
|             //获取95%累积线 | ||||
|             double percentile95 = DistributionAnalysisToolkit.calculate95thPercentile(data); | ||||
| 
 | ||||
|             resultMap.put("stats", stats); | ||||
|             resultMap.put("cdfPoints", cdfPoints); | ||||
|             resultMap.put("kdePoints", kdePoints); | ||||
|             resultMap.put("cumulative", cumulative); | ||||
|             resultMap.put("percentile95", percentile95); | ||||
|             result.setSuccess(true); | ||||
|             result.setResult(resultMap); | ||||
|             return result; | ||||
|         } catch (Exception e) { | ||||
|             result.error500("样品活度浓度区间频率分析错误:" + e.getMessage()); | ||||
|             return result; | ||||
|         } | ||||
|         if (StringUtils.isBlank(nuclideName)) { | ||||
|             result.error500("nuclideName Code cannot be null"); | ||||
|             return result; | ||||
|         } | ||||
|         if (StringUtils.isBlank(station)) { | ||||
|             result.error500("Station Code cannot be null"); | ||||
|             return result; | ||||
|         } | ||||
|         if (Objects.isNull(startDate)) { | ||||
|             result.error500("The start time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|         if (Objects.isNull(endDate)) { | ||||
|             result.error500("The end time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|         //endregion | ||||
| 
 | ||||
|         //根据数据源、样品类型查询样品的浓度 | ||||
|         switch (sampleType) { | ||||
|             case "P": | ||||
|                 switch (dataSource) { | ||||
|                     //RNAUTO | ||||
|                     case 1: | ||||
|                         nuclideActConcIntvls = this.baseMapper.getRnautoPNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                         break; | ||||
|                     //RNMAN | ||||
|                     case 2: | ||||
|                         nuclideActConcIntvls = this.baseMapper.getRnautoNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                         break; | ||||
|                 } | ||||
|                 break; | ||||
|             case "B": | ||||
|                 switch (dataSource) { | ||||
|                     case 1: | ||||
|                         nuclideActConcIntvls = this.baseMapper.getRnmanPNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                         break; | ||||
|                     case 2: | ||||
|                         nuclideActConcIntvls = this.baseMapper.getRnmanNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                         break; | ||||
| 
 | ||||
|                 } | ||||
|                 break; | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         //获取浓度出现的次数 | ||||
|         //获取浓度值集合 | ||||
|         List<Double> data = DistributionAnalysisToolkit.convertConcToDoubleList(nuclideActConcIntvls); | ||||
|         // 设置区间参数 | ||||
|         double start = 0;          // 区间起始值 | ||||
|         double step = 200;          // 区间步长(宽度) | ||||
| 
 | ||||
| 
 | ||||
|         // 1. 区间统计 | ||||
|         List<DistributionAnalysisToolkit.IntervalStat> stats = DistributionAnalysisToolkit.calculateIntervalStats(nuclideActConcIntvls, start, step); | ||||
|         // 3. 累积分布函数 | ||||
|         List<DistributionAnalysisToolkit.CDFPoint> cdfPoints = DistributionAnalysisToolkit.calculateCDF(data); | ||||
|         // 4. 核密度估计 | ||||
|         List<DistributionAnalysisToolkit.KDEPoint> kdePoints = DistributionAnalysisToolkit.autoKDE(data, DistributionAnalysisToolkit.GAUSSIAN_KERNEL); | ||||
|         //获取所有浓度的累积 | ||||
|         List<Double> cumulative = DistributionAnalysisToolkit.cumulativeSum(data); | ||||
|         //获取95%累积线 | ||||
|         double percentile95 = DistributionAnalysisToolkit.calculate95thPercentile(data); | ||||
| 
 | ||||
|         resultMap.put("stats", stats); | ||||
|         resultMap.put("cdfPoints", cdfPoints); | ||||
|         resultMap.put("kdePoints", kdePoints); | ||||
|         resultMap.put("cumulative", cumulative); | ||||
|         resultMap.put("percentile95", percentile95); | ||||
|         result.setSuccess(true); | ||||
|         result.setResult(resultMap); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     /*** 核素活度浓度时序分析 | ||||
|  | @ -314,75 +331,82 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys | |||
|     @Override | ||||
|     public Result getSampleActConcTimeSeqAnalysis(String sampleType, String station, String nuclideName, Integer dataSource, Date startDate, Date endDate) { | ||||
|         Result result = new Result(); | ||||
|         result.setCode(CommonConstant.SC_OK_200); | ||||
|         //声明返回用的结果map | ||||
|         Map<String, Object> resultMap = new HashMap<>(); | ||||
|         //region 局部变量 | ||||
|         try { | ||||
|             result.setCode(CommonConstant.SC_OK_200); | ||||
| 
 | ||||
|         if (StringUtils.isBlank(sampleType)) { | ||||
|             result.error500("SampleType Code cannot be null"); | ||||
|             return result; | ||||
|         } | ||||
|         if (StringUtils.isBlank(nuclideName)) { | ||||
|             result.error500("nuclideName Code cannot be null"); | ||||
|             return result; | ||||
|         } | ||||
|         if (StringUtils.isBlank(station)) { | ||||
|             result.error500("Station Code cannot be null"); | ||||
|             return result; | ||||
|         } | ||||
|         if (Objects.isNull(startDate)) { | ||||
|             result.error500("The start time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|         if (Objects.isNull(endDate)) { | ||||
|             result.error500("The end time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|         //endregion | ||||
|         //获取样品阈值级别和阈值 | ||||
|         List<SampleLevelData> sampleDatas = new ArrayList<>(); | ||||
|         //核素的阈值 | ||||
|         List<GardsThresholdResultHis> thresholdResultHisList = new ArrayList<>(); | ||||
|         List<NuclideActConcIntvl> nuclideActConcIntvls = new ArrayList<>(); | ||||
|         nuclideActConcIntvls = switch (sampleType) { | ||||
|             case "P" -> { | ||||
|                 sampleDatas = this.baseMapper.getRnAutoSampleLevel(station, startTime, endTime); | ||||
|                 yield switch (dataSource) { | ||||
|                     //RNAUTO | ||||
|                     case 1 -> | ||||
|                             this.baseMapper.getRnautoPNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                     //RNMAN | ||||
|                     case 2 -> | ||||
|                             this.baseMapper.getRnautoNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                     default -> nuclideActConcIntvls; | ||||
|                 }; | ||||
|             //region 局部变量 | ||||
| 
 | ||||
|             if (StringUtils.isBlank(sampleType)) { | ||||
|                 result.error500("SampleType Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             case "B" -> { | ||||
|                 sampleDatas = this.baseMapper.getRnManSampleLevel(station, startTime, endTime); | ||||
|                 yield switch (dataSource) { | ||||
|                     case 1 -> | ||||
|                             this.baseMapper.getRnmanPNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                     case 2 -> | ||||
|                             this.baseMapper.getRnmanNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                     default -> nuclideActConcIntvls; | ||||
|                 }; | ||||
|             if (StringUtils.isBlank(nuclideName)) { | ||||
|                 result.error500("nuclideName Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             default -> nuclideActConcIntvls; | ||||
|         }; | ||||
|         String schemaName = dataSource == 1 ? "RNAUTO" : "RNMAN"; | ||||
|             if (StringUtils.isBlank(station)) { | ||||
|                 result.error500("Station Code cannot be null"); | ||||
|                 return result; | ||||
|             } | ||||
|             if (Objects.isNull(startDate)) { | ||||
|                 result.error500("The start time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|             if (Objects.isNull(endDate)) { | ||||
|                 result.error500("The end time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
|             //endregion | ||||
|             //获取样品阈值级别和阈值 | ||||
|             List<SampleLevelData> sampleDatas = new ArrayList<>(); | ||||
|             //核素的阈值 | ||||
|             List<GardsThresholdResultHis> thresholdResultHisList = new ArrayList<>(); | ||||
|             List<NuclideActConcIntvl> nuclideActConcIntvls = new ArrayList<>(); | ||||
|             nuclideActConcIntvls = switch (sampleType) { | ||||
|                 case "P" -> { | ||||
|                     sampleDatas = this.baseMapper.getRnAutoSampleLevel(station, startTime, endTime); | ||||
|                     yield switch (dataSource) { | ||||
|                         //RNAUTO | ||||
|                         case 1 -> | ||||
|                                 this.baseMapper.getRnautoPNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                         //RNMAN | ||||
|                         case 2 -> | ||||
|                                 this.baseMapper.getRnautoNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                         default -> nuclideActConcIntvls; | ||||
|                     }; | ||||
|                 } | ||||
|                 case "B" -> { | ||||
|                     sampleDatas = this.baseMapper.getRnManSampleLevel(station, startTime, endTime); | ||||
|                     yield switch (dataSource) { | ||||
|                         case 1 -> | ||||
|                                 this.baseMapper.getRnmanPNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                         case 2 -> | ||||
|                                 this.baseMapper.getRnmanNuclideActConcIntvl(sampleType, station, nuclideName, startTime, endTime); | ||||
|                         default -> nuclideActConcIntvls; | ||||
|                     }; | ||||
|                 } | ||||
|                 default -> nuclideActConcIntvls; | ||||
|             }; | ||||
|             String schemaName = dataSource == 1 ? "RNAUTO" : "RNMAN"; | ||||
| 
 | ||||
|         thresholdResultHisList = this.baseMapper.selectByCondition(schemaName, Arrays.asList(Integer.valueOf(station)) | ||||
|                 , Arrays.asList(nuclideName), startTime, endTime); | ||||
|         resultMap.put("sampleDataList", sampleDatas); | ||||
|         resultMap.put("nuclideInfoList", nuclideActConcIntvls); | ||||
|         resultMap.put("thresholdResultHisList", thresholdResultHisList); | ||||
|             thresholdResultHisList = this.baseMapper.selectByCondition(schemaName, Arrays.asList(Integer.valueOf(station)) | ||||
|                     , Arrays.asList(nuclideName), startTime, endTime); | ||||
|             resultMap.put("sampleDataList", sampleDatas); | ||||
|             resultMap.put("nuclideInfoList", nuclideActConcIntvls); | ||||
|             resultMap.put("thresholdResultHisList", thresholdResultHisList); | ||||
| 
 | ||||
|             result.setSuccess(true); | ||||
|             result.setResult(resultMap); | ||||
|             return result; | ||||
|         } catch (Exception e) { | ||||
|             result.error500("核素活度浓度时序分析错误:" + e.getMessage()); | ||||
|             return result; | ||||
|         } | ||||
| 
 | ||||
|         result.setSuccess(true); | ||||
|         result.setResult(resultMap); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     /*** 核素活度浓度对比分析 | ||||
|  | @ -396,43 +420,48 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys | |||
|      * @return | ||||
|      */ | ||||
|     public Result getNuclideActivityConcAnalyze(String sampleType, Integer[] stationIds, String nuclideName, Integer dataSource, Date startDate, Date endDate) { | ||||
| 
 | ||||
|         Result result = new Result(); | ||||
|         result.setCode(CommonConstant.SC_OK_200); | ||||
|         Map<String, Object> resultMap = new HashMap<>(); | ||||
|         List<NuclideActConcIntvl> nuclideActConcIntvls = new ArrayList<>(); | ||||
|         //region 局部变量 | ||||
|         if (Objects.isNull(startDate)) { | ||||
|             result.error500("The start time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|         if (Objects.isNull(endDate)) { | ||||
|             result.error500("The end time cannot be empty"); | ||||
|             return result; | ||||
|         } | ||||
|         String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
| 
 | ||||
|         if (Objects.isNull(stationIds)) { | ||||
|         Result result = new Result(); | ||||
|         try { | ||||
|             result.setCode(CommonConstant.SC_OK_200); | ||||
| 
 | ||||
|             //region 局部变量 | ||||
|             if (Objects.isNull(startDate)) { | ||||
|                 result.error500("The start time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String startTime = DateUtils.formatDate(startDate, "yyyy-MM-dd") + " 00:00:00"; | ||||
|             if (Objects.isNull(endDate)) { | ||||
|                 result.error500("The end time cannot be empty"); | ||||
|                 return result; | ||||
|             } | ||||
|             String endTime = DateUtils.formatDate(endDate, "yyyy-MM-dd") + " 23:59:59"; | ||||
| 
 | ||||
|             if (Objects.isNull(stationIds)) { | ||||
|                 result.setSuccess(true); | ||||
|                 result.setResult(Collections.emptyList()); | ||||
|                 return result; | ||||
|             } | ||||
|             //endregion | ||||
|             switch (dataSource) { | ||||
|                 case 1: | ||||
|                     nuclideActConcIntvls = this.baseMapper.getRnAutoAnalyzeNuclideActivityConc(sampleType, nuclideName, stationIds, startTime, endTime); | ||||
|                     break; | ||||
|                 case 2: | ||||
|                     nuclideActConcIntvls = this.baseMapper.getRnManAnalyzeNuclideActivityConc(sampleType, nuclideName, stationIds, startTime, endTime); | ||||
|                     break; | ||||
| 
 | ||||
|             } | ||||
|             resultMap.put("nuclideInfoList", nuclideActConcIntvls); | ||||
|             result.setSuccess(true); | ||||
|             result.setResult(Collections.emptyList()); | ||||
|             result.setResult(resultMap); | ||||
|             return result; | ||||
|         } catch (Exception e) { | ||||
|             result.error500("核素活度浓度对比分析错误:" + e.getMessage()); | ||||
|             return result; | ||||
|         } | ||||
|         //endregion | ||||
|         switch (dataSource) { | ||||
|             case 1: | ||||
|                 nuclideActConcIntvls = this.baseMapper.getRnAutoAnalyzeNuclideActivityConc(sampleType, nuclideName, stationIds, startTime, endTime); | ||||
|                 break; | ||||
|             case 2: | ||||
|                 nuclideActConcIntvls = this.baseMapper.getRnManAnalyzeNuclideActivityConc(sampleType, nuclideName, stationIds, startTime, endTime); | ||||
|                 break; | ||||
| 
 | ||||
|         } | ||||
|         resultMap.put("nuclideInfoList", nuclideActConcIntvls); | ||||
|         result.setSuccess(true); | ||||
|         result.setResult(resultMap); | ||||
| 
 | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 duwenyuan
						duwenyuan