修改数据分析
This commit is contained in:
parent
c2731e421c
commit
290493fa34
|
|
@ -1,6 +1,8 @@
|
|||
package org.jeecg.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
|
@ -15,4 +17,10 @@ public class GardsThresholdResultHis {
|
|||
private double percentile75;
|
||||
private Date calculationTime;
|
||||
private Long idAnalysis;
|
||||
/** 收集停止时间
|
||||
*
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date collectStop;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package org.jeecg.entity;
|
|||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
|
|
@ -12,62 +13,78 @@ public class NuclideActConcIntvl {
|
|||
/** 样品ID
|
||||
*
|
||||
*/
|
||||
@JsonProperty("SAMPLEID")
|
||||
private Integer sampleId;
|
||||
/**
|
||||
* 级别
|
||||
*/
|
||||
@JsonProperty("CATEGORY")
|
||||
private Integer category;
|
||||
|
||||
/**
|
||||
* 阈值
|
||||
*/
|
||||
@JsonProperty("THRESHOLDVALUE")
|
||||
private double thresholdValue;
|
||||
/**样品类型
|
||||
* 系统类型(P : particulate; B :gas with 3-D β-γ coincidence detection; G :all other gas systems (high-resolution
|
||||
* γ-spectrometry or 2-D β-γ coincidence
|
||||
* detection))
|
||||
*/
|
||||
@JsonProperty("SAMPLE_TYPE")
|
||||
private String sampleType;
|
||||
|
||||
/** 台站ID
|
||||
*
|
||||
*/
|
||||
@JsonProperty("STATIONID")
|
||||
private Integer stationId;
|
||||
/** 台站编码
|
||||
*
|
||||
*/
|
||||
@JsonProperty("STATIONCODE")
|
||||
private String stationCode;
|
||||
|
||||
/**数据源
|
||||
*
|
||||
*/
|
||||
@JsonProperty("DATASOURCE")
|
||||
private Integer dataSource;
|
||||
|
||||
/** MDC
|
||||
*
|
||||
*/
|
||||
@JsonProperty("MDC")
|
||||
private Double mdc;
|
||||
|
||||
/** 活度浓度
|
||||
*
|
||||
*/
|
||||
@JsonProperty("CONC")
|
||||
private Double conc;
|
||||
/** 收集停止时间
|
||||
*
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonProperty("COLLECTSTOP")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date collectStop;
|
||||
/**
|
||||
* 活度值不确定度
|
||||
*/
|
||||
@JsonProperty("CONCERR")
|
||||
private Double concErr;
|
||||
|
||||
/**
|
||||
* 样品处理状态
|
||||
*/
|
||||
|
||||
@JsonProperty("STATUS")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 核素名称
|
||||
*/
|
||||
@JsonProperty("NUCLIDE_NAME")
|
||||
private String nuclideName;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package org.jeecg.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
|
@ -11,14 +13,34 @@ public class SampleLevelData {
|
|||
* 样品ID
|
||||
*/
|
||||
private Integer sampleId;
|
||||
/**
|
||||
* 采集停止时间
|
||||
/** 收集停止时间
|
||||
*
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date collectStop;
|
||||
/**
|
||||
* 级别
|
||||
*/
|
||||
private Integer category;
|
||||
|
||||
/** 活度浓度
|
||||
*
|
||||
*/
|
||||
private Double conc;
|
||||
/**
|
||||
* 活度值不确定度
|
||||
*/
|
||||
private Double concErr;
|
||||
|
||||
/** MDC
|
||||
*
|
||||
*/
|
||||
private Double mdc;
|
||||
|
||||
/**
|
||||
* 阈值
|
||||
*/
|
||||
private Double thresholdValue;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,12 @@ public interface GardsSampleStatAnalysisMapper extends BaseMapper<GardsSampleDat
|
|||
|
||||
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
|
||||
|
||||
//region RNAUTO 获取样品中元素的浓度活度、MDC信息
|
||||
|
|
|
|||
|
|
@ -41,8 +41,8 @@
|
|||
ON t1.SAMPLE_ID = t2.SAMPLE_ID
|
||||
WHERE t1.STATION_ID = #{station}
|
||||
AND t1.SAMPLE_TYPE = #{sampleType}
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
|
||||
</select>
|
||||
|
||||
|
|
@ -56,8 +56,8 @@
|
|||
ON t1.SAMPLE_ID = t2.SAMPLE_ID
|
||||
WHERE t1.STATION_ID = #{station}
|
||||
AND t1.SAMPLE_TYPE = #{sampleType}
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
|
||||
</select>
|
||||
|
||||
|
|
@ -73,8 +73,8 @@
|
|||
RNAUTO.GARDS_ANALYSES b
|
||||
WHERE a.SAMPLE_ID = b.SAMPLE_ID
|
||||
AND a.STATION_ID = #{station}
|
||||
AND a.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND a.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
<select id="getRnManSampleLevel" resultType="org.jeecg.entity.SampleLevelData">
|
||||
|
|
@ -85,8 +85,8 @@
|
|||
RNMAN.GARDS_ANALYSES b
|
||||
WHERE a.SAMPLE_ID = b.SAMPLE_ID
|
||||
AND a.STATION_ID = #{station}
|
||||
AND a.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND a.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
|
||||
|
|
@ -112,8 +112,8 @@
|
|||
WHERE a.SAMPLE_TYPE = #{sampleType}
|
||||
AND a.STATION_ID = #{station}
|
||||
AND b.NUCLIDENAME = #{nuclideName}
|
||||
AND a.COLLECT_START BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND a.COLLECT_START BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
<!-- 获取样品类型=气体 元素的浓度活度、MDC信息-->
|
||||
|
|
@ -134,8 +134,8 @@
|
|||
WHERE a.SAMPLE_TYPE = '#{sampleType}'
|
||||
AND a.STATION_ID = #{station}
|
||||
AND b.NUCLIDENAME = #{nuclideName}
|
||||
AND a.COLLECT_START BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND a.COLLECT_START BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
|
||||
|
|
@ -158,8 +158,8 @@
|
|||
WHERE a.SAMPLE_TYPE = '#{sampleType}'
|
||||
AND a.STATION_ID = #{station}
|
||||
AND b.NUCLIDENAME = #{nuclideName}
|
||||
AND a.COLLECT_START BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND a.COLLECT_START BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
<!-- 获取样品类型=气体 元素的浓度活度、MDC信息-->
|
||||
|
|
@ -180,8 +180,8 @@
|
|||
WHERE a.SAMPLE_TYPE = '#{sampleType}'
|
||||
AND a.STATION_ID = #{station}
|
||||
AND b.NUCLIDENAME = #{nuclideName}
|
||||
AND a.COLLECT_START BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND a.COLLECT_START BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
|
||||
|
|
@ -190,41 +190,54 @@
|
|||
<!-- RnAuto 获取样品中识别到的核素集合-->
|
||||
|
||||
<select id="getRnAutoIdentifiedNuclides" resultType="org.jeecg.entity.NuclideActConcIntvl">
|
||||
|
||||
SELECT t1.SAMPLE_ID AS sampleId,
|
||||
SELECT * FROM (
|
||||
<!-- P类型数据 -->
|
||||
SELECT
|
||||
t1.SAMPLE_ID AS sampleId,
|
||||
t1.COLLECT_STOP AS collectStop,
|
||||
t1.SAMPLE_TYPE AS sampleType,
|
||||
t1.STATION_ID AS stationId,
|
||||
t1.STATUS AS status,
|
||||
CASE
|
||||
WHEN t1.SAMPLE_TYPE = 'P' THEN
|
||||
t2.NUCLIDENAME
|
||||
WHEN t1.SAMPLE_TYPE = 'B' THEN
|
||||
t3.NUCLIDE_NAME
|
||||
END AS NUCLIDE_NAME,
|
||||
CASE
|
||||
WHEN t1.SAMPLE_TYPE = 'P' THEN
|
||||
TO_NUMBER(REGEXP_REPLACE(t2.CONCENTRATION, '[^0-9.Ee-]', ''))
|
||||
WHEN t1.SAMPLE_TYPE = 'B' THEN
|
||||
t3.CONC
|
||||
END AS conc,
|
||||
CASE
|
||||
WHEN t1.SAMPLE_TYPE = 'P' THEN
|
||||
TO_NUMBER(REGEXP_REPLACE(t2.MDC, '[^0-9.Ee-]', ''))
|
||||
WHEN t1.SAMPLE_TYPE = 'B' THEN
|
||||
t3.MDC
|
||||
END AS mdc
|
||||
COALESCE(s1.category, 0) AS category,
|
||||
t2.NUCLIDENAME AS nuclideName,
|
||||
CAST(REGEXP_REPLACE(t2.CONCENTRATION, '[^0-9.Ee-]', '') AS BINARY_DOUBLE) AS conc,
|
||||
0 as concErr,
|
||||
CAST(REGEXP_REPLACE(t2.MDC, '[^0-9.Ee-]', '') AS BINARY_DOUBLE) AS mdc
|
||||
FROM ORIGINAL.GARDS_SAMPLE_DATA t1
|
||||
LEFT JOIN RNAUTO.GARDS_NUCL_IDED t2 ON t1.SAMPLE_TYPE = 'P'
|
||||
AND t1.SAMPLE_ID = t2.SAMPLE_ID
|
||||
LEFT JOIN RNAUTO.GARDS_XE_RESULTS t3 ON t1.SAMPLE_TYPE = 'B'
|
||||
AND t1.SAMPLE_ID = t3.SAMPLE_ID
|
||||
LEFT JOIN RNAUTO.GARDS_ANALYSES s1 ON t1.SAMPLE_ID = s1.SAMPLE_ID
|
||||
INNER JOIN RNAUTO.GARDS_NUCL_IDED t2 ON t1.SAMPLE_ID = t2.SAMPLE_ID
|
||||
WHERE t1.STATION_ID = #{station}
|
||||
AND t1.STATUS != 'F'
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}
|
||||
, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}
|
||||
, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND t1.COLLECT_STOP >= TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND t1.COLLECT_STOP < TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND t1.SAMPLE_TYPE = 'P'
|
||||
|
||||
UNION ALL
|
||||
|
||||
<!-- B类型数据 -->
|
||||
SELECT
|
||||
t1.SAMPLE_ID AS sampleId,
|
||||
t1.COLLECT_STOP AS collectStop,
|
||||
t1.SAMPLE_TYPE AS sampleType,
|
||||
t1.STATION_ID AS stationId,
|
||||
t1.STATUS AS status,
|
||||
COALESCE(s1.category, 0) AS category,
|
||||
t3.NUCLIDE_NAME AS nuclideName,
|
||||
t3.CONC AS conc,
|
||||
t3.CONC_ERR as concErr,
|
||||
t3.MDC AS mdc
|
||||
FROM ORIGINAL.GARDS_SAMPLE_DATA t1
|
||||
LEFT JOIN RNAUTO.GARDS_ANALYSES s1 ON t1.SAMPLE_ID = s1.SAMPLE_ID
|
||||
INNER JOIN RNAUTO.GARDS_XE_RESULTS t3 ON t1.SAMPLE_ID = t3.SAMPLE_ID
|
||||
WHERE t1.STATION_ID = #{station}
|
||||
AND t1.STATUS != 'F'
|
||||
AND t1.COLLECT_STOP >= TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND t1.COLLECT_STOP < TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND t1.SAMPLE_TYPE = 'B'
|
||||
) t
|
||||
ORDER BY collectStop DESC
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
<!-- RnAuto 核素等级时序分析-->
|
||||
|
|
@ -238,8 +251,50 @@
|
|||
RNAUTO.GARDS_ANALYSES B
|
||||
ON A.SAMPLE_ID = B.SAMPLE_ID
|
||||
WHERE A.STATION_ID = #{station}
|
||||
AND A.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND A.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
<select id="getNuclideTimeSeriesAnalysis" resultType="org.jeecg.entity.SampleLevelData">
|
||||
SELECT a.SAMPLE_ID,
|
||||
a.COLLECT_STOP,
|
||||
b.CATEGORY,
|
||||
CAST(REGEXP_REPLACE(c.MDC, '[^0-9.Ee-]', '') AS BINARY_DOUBLE) AS mdc,
|
||||
CAST(REGEXP_REPLACE(c.CONCENTRATION, '[^0-9.Ee-]', '') AS BINARY_DOUBLE) AS conc,
|
||||
0 AS concErr,
|
||||
th1.THRESHOLD_VALUE
|
||||
FROM ORIGINAL.GARDS_SAMPLE_DATA a
|
||||
INNER JOIN ${schemaName}.GARDS_ANALYSES b ON a.SAMPLE_ID = b.SAMPLE_ID AND b.CATEGORY > 2
|
||||
INNER JOIN ${schemaName}.GARDS_NUCL_IDED c
|
||||
ON a.SAMPLE_ID = c.SAMPLE_ID AND c.NUCLIDENAME = #{nuclideName}
|
||||
INNER JOIN ${schemaName}.GARDS_THRESHOLD_RESULT_HIS th1
|
||||
ON a.STATION_ID = th1.STATION_ID
|
||||
AND a.COLLECT_STOP = th1.COLLECT_STOP
|
||||
AND th1.NUCLIDENAME = #{nuclideName}
|
||||
WHERE a.STATION_ID = #{station}
|
||||
AND a.SAMPLE_TYPE = 'P'
|
||||
AND a.COLLECT_STOP >= TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND a.COLLECT_STOP < TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
UNION ALL
|
||||
SELECT a.SAMPLE_ID,
|
||||
a.COLLECT_STOP,
|
||||
b.CATEGORY,
|
||||
c.MDC AS mdc,
|
||||
c.conc AS conc,
|
||||
c.CONC_ERR concErr,
|
||||
th1.THRESHOLD_VALUE
|
||||
FROM ORIGINAL.GARDS_SAMPLE_DATA a
|
||||
INNER JOIN ${schemaName}.GARDS_ANALYSES b ON a.SAMPLE_ID = b.SAMPLE_ID
|
||||
INNER JOIN ${schemaName}.GARDS_XE_RESULTS c
|
||||
ON a.SAMPLE_ID = c.SAMPLE_ID AND c.NUCLIDE_NAME = #{nuclideName}
|
||||
INNER JOIN ${schemaName}.GARDS_THRESHOLD_RESULT_HIS th1
|
||||
ON a.STATION_ID = th1.STATION_ID
|
||||
AND a.COLLECT_STOP = th1.COLLECT_STOP
|
||||
AND th1.NUCLIDENAME = #{nuclideName}
|
||||
WHERE a.STATION_ID = #{station}
|
||||
AND a.SAMPLE_TYPE = 'B'
|
||||
AND a.COLLECT_STOP >= TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND a.COLLECT_STOP < TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
|
||||
|
|
@ -271,9 +326,9 @@
|
|||
WHERE t1.STATION_ID = #{station}
|
||||
AND t1.STATUS != 'F'
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}
|
||||
, 'YYYY-MM-DD hh24:mi:ss')
|
||||
, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}
|
||||
, 'YYYY-MM-DD hh24:mi:ss')
|
||||
, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
<!-- RnMan 核素等级时序分析-->
|
||||
<select id="getRnManNuclideTimeSeriesAnalysis" resultType="org.jeecg.entity.SampleLevelData">
|
||||
|
|
@ -285,8 +340,8 @@
|
|||
RNMAN.GARDS_ANALYSES B
|
||||
ON A.SAMPLE_ID = B.SAMPLE_ID
|
||||
WHERE A.STATION_ID = #{station}
|
||||
AND A.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND A.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</select>
|
||||
|
||||
<select id="selectByStationAndNuclide" resultType="org.jeecg.entity.GardsThresholdResultHis">
|
||||
|
|
@ -515,8 +570,8 @@
|
|||
LEFT JOIN CONFIGURATION.GARDS_STATIONS c1
|
||||
ON t1.STATION_ID = c1.STATION_ID
|
||||
WHERE t1.SAMPLE_TYPE = #{sampleType}
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
ORDER BY t1.COLLECT_STOP ASC
|
||||
|
||||
</select>
|
||||
|
|
@ -539,8 +594,8 @@
|
|||
LEFT JOIN CONFIGURATION.GARDS_STATIONS c1
|
||||
ON t1.STATION_ID = c1.STATION_ID
|
||||
WHERE t1.SAMPLE_TYPE = #{sampleType}
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD hh24:mi:ss')
|
||||
AND t1.COLLECT_STOP BETWEEN TO_DATE(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
ORDER BY t1.COLLECT_STOP ASC
|
||||
|
||||
</select>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,13 @@
|
|||
package org.jeecg.service.impl;
|
||||
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
|
|
@ -21,6 +25,7 @@ import org.jeecg.vo.StationInfoVO;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
|
@ -221,6 +226,43 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys
|
|||
.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);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(thresholdResultHisDataList)) {
|
||||
// 构建Map: 复合键 -> 阈值
|
||||
Map<String, GardsThresholdResultHis> thresholdMap = new HashMap<>();
|
||||
|
||||
for (GardsThresholdResultHis threshold : thresholdResultHisDataList) {
|
||||
// 创建复合键: nuclideName|stationId|collectStop
|
||||
String key = threshold.getNuclideName() + "|" +
|
||||
(threshold.getStationId() != null ? Integer.valueOf(threshold.getStationId()) : stationCode) + "|" +
|
||||
safeGetTime(threshold.getCollectStop());
|
||||
thresholdMap.put(key, threshold);
|
||||
}
|
||||
|
||||
// 设置阈值
|
||||
for (NuclideActConcIntvl data : nuclideActConcIntvlList) {
|
||||
if (data.getNuclideName() == null || data.getCollectStop() == null) {
|
||||
continue;
|
||||
}
|
||||
// 创建相同的复合键
|
||||
String dataKey = data.getNuclideName() + "|" +
|
||||
(data.getStationCode() != null ? Integer.valueOf(data.getStationCode()) : stationCode) + "|" +
|
||||
data.getCollectStop().getTime();
|
||||
|
||||
GardsThresholdResultHis threshold = thresholdMap.get(dataKey);
|
||||
if (threshold != null) {
|
||||
data.setThresholdValue(threshold.getThresholdValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Map<String, List<NuclideActConcIntvl>> sortedByCount = groupedByNuclideName.entrySet().stream()
|
||||
.sorted(Map.Entry.<String, List<NuclideActConcIntvl>>comparingByValue(
|
||||
Comparator.comparingInt(List::size)
|
||||
|
|
@ -233,17 +275,10 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys
|
|||
));
|
||||
|
||||
|
||||
|
||||
//查询级别 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("nuclideActConcIntvlList", sortedByCount);
|
||||
resultMap.put("sampleLevelDataList", sampleLevelDataList);
|
||||
resultMap.put("thresholdResultHisDataList", thresholdResultHisDataList);
|
||||
//resultMap.put("sampleLevelDataList", sampleLevelDataList);
|
||||
//resultMap.put("thresholdResultHisDataList", thresholdResultHisDataList);
|
||||
result.setSuccess(true);
|
||||
result.setResult(resultMap);
|
||||
return result;
|
||||
|
|
@ -253,7 +288,10 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
// 安全获取时间戳
|
||||
private long safeGetTime(Date date) {
|
||||
return date != null ? date.getTime() : 0L;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定时间范围内的样品等级
|
||||
|
|
@ -382,6 +420,13 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys
|
|||
|
||||
}
|
||||
|
||||
|
||||
// File file=new File("C:\\Users\\cnndc\\Desktop\\数据导出\\无标题.json");
|
||||
// ObjectMapper objectMapper = new ObjectMapper();
|
||||
// Double/Integer(处理 "3.776103e+03" → 3776.103)
|
||||
// objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
|
||||
// nuclideActConcIntvls= objectMapper.readValue(file, new TypeReference<List<NuclideActConcIntvl>>() {});
|
||||
|
||||
//获取浓度出现的次数
|
||||
//获取浓度值集合
|
||||
List<Double> data = DistributionAnalysisToolkit.convertConcToDoubleList(nuclideActConcIntvls);
|
||||
|
|
@ -465,44 +510,53 @@ public class SampleStatAnalysisService extends ServiceImpl<GardsSampleStatAnalys
|
|||
//核素的阈值
|
||||
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;
|
||||
};
|
||||
//region
|
||||
// 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;
|
||||
// };
|
||||
//endregion
|
||||
String schemaName = dataSource == 1 ? "RNAUTO" : "RNMAN";
|
||||
|
||||
thresholdResultHisList = this.baseMapper.selectByCondition(schemaName, Arrays.asList(Integer.valueOf(station))
|
||||
, Arrays.asList(nuclideName), startTime, endTime);
|
||||
|
||||
List<SampleLevelData> sampleDatass = this.baseMapper.getNuclideTimeSeriesAnalysis(schemaName,station,nuclideName, startTime, endTime);
|
||||
|
||||
|
||||
|
||||
|
||||
// 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);
|
||||
// resultMap.put("nuclideInfoList", nuclideActConcIntvls);
|
||||
// resultMap.put("thresholdResultHisList", thresholdResultHisList);
|
||||
|
||||
result.setSuccess(true);
|
||||
result.setResult(resultMap);
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
result.error500("核素活度浓度时序分析错误:" + e.getMessage());
|
||||
log.error("核素活度浓度时序分析错误:" + e.getMessage(), e);
|
||||
result.error500("核素活度浓度时序分析错误" );
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,9 +23,17 @@ public class DistributionAnalysisToolkit {
|
|||
this.count = nuclideData.size();
|
||||
for (NuclideActConcIntvl nuclide : nuclideData) {
|
||||
//获取浓度值
|
||||
values.add(nuclide.getConc());
|
||||
//计算获取级别
|
||||
levelDistribution.merge(nuclide.getCategory(),1,Integer::sum);
|
||||
Double conc = nuclide.getConc();
|
||||
if (conc != null) { // 过滤 conc null
|
||||
values.add(conc);
|
||||
}
|
||||
Integer category = nuclide.getCategory();
|
||||
if (category != null) { // 跳过 null
|
||||
levelDistribution.merge(category, 1, Integer::sum);
|
||||
} else {
|
||||
// 数据库中存在记录 null 级别,用特殊 key 如 -1
|
||||
// levelDistribution.merge(-1, 1, Integer::sum);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user