web-statistics模块移除无效的引用

新增获取台站数据的提供率及有效率
This commit is contained in:
qiaoqinzheng 2023-07-04 09:00:34 +08:00
parent 9b8d8d9223
commit 33cb65a6fd
38 changed files with 2827 additions and 76 deletions

View File

@ -0,0 +1,574 @@
package org.jeecg.common;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.modules.entity.data.*;
import org.jeecg.modules.service.ICalCulStationDataService;
import org.jeecgframework.core.util.ApplicationContextUtil;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
@Slf4j
public class CalculateDataRateThread implements Runnable{
private ICalCulStationDataService calCulStationDataService = ApplicationContextUtil.getContext().getBean(ICalCulStationDataService.class);
private final GetStationinfoAndDataRate stationinfoAndDataRate;
private final List<StationInfo> finallySta;
private CountDownLatch countDownLatch;
CalculateDataRateThread(List<StationInfo> finallySta, GetStationinfoAndDataRate stationinfoAndDataRate, CountDownLatch countDownLatch) {
this.stationinfoAndDataRate = stationinfoAndDataRate;
this.finallySta = finallySta;
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
try {
this.calCulStationInfo();
}catch (Exception e){
e.printStackTrace();
} finally {
// CountDownLatch 计数器减 1
countDownLatch.countDown();
}
}
/**
* 计算台站信息
*/
public void calCulStationInfo(){
//判断当前台站及数据相关信息是否为空
if(Objects.isNull(stationinfoAndDataRate)) {
return;
}
//获取台站信息
StationInfo originalstationsinfo = stationinfoAndDataRate.getMOriginalstationsinfo();
//获取台站参数
RateParam mRateparam = stationinfoAndDataRate.getMRateparam();
//如果台站信息及台站参数不为空
if (Objects.nonNull(originalstationsinfo) && Objects.nonNull(mRateparam)) {
//声明存储计算结果的实体类
CalculateDataRate calculateDataRate = new CalculateDataRate();
calculateDataRate.setParameter(mRateparam);
//根据台站编码 查询 台站信息
StationInfo stationInfo = calCulStationDataService.getStationInfo(originalstationsinfo.getStationCode());
//赋值台站信息
calculateDataRate.setMStationId(stationInfo.getId());
calculateDataRate.setMStationCode(stationInfo.getStationCode());
calculateDataRate.setMStationType(stationInfo.getType());
//计算台站数据
Rate calculate = this.calculate(calculateDataRate);
stationInfo.setPhdf(String.valueOf(calculate.getPhdfOffered()/calculate.getPhdfEfficient()));
stationInfo.setPhd(String.valueOf(calculate.getPhdOffered()/calculate.getPhdEfficient()));
stationInfo.setMet(String.valueOf(calculate.getMet()));
stationInfo.setSoh(String.valueOf(calculate.getSoh()));
stationInfo.setPhdMetSoh(String.valueOf(calculate.getPhdMetSoh()));
//赋值最后的结果
finallySta.add(stationInfo);
}
}
/**
* 根据台站编码及台站类型选择不同的方法
* @param calculateDataRate
*/
public Rate calculate(CalculateDataRate calculateDataRate){
Rate mRate = new Rate();
if (StringUtils.isBlank(calculateDataRate.getMStationId())) {
log.error("台站id不能为空");
}
//获取台站编码
String stationCode = calculateDataRate.getMStationCode();
//获取台站类型
String stationType = calculateDataRate.getMStationType();
//判断台站编码及台站类型
if((StringUtils.isNotBlank(stationCode) && stationCode.substring(2,3).equals("X")) && (StringUtils.isNotBlank(stationType) && stationType.equals("SAUNA")) ) {
//切割台站编码 如果 第三个字符是 X 并且 台站类型是 SAUNA
mRate = saunacalc(calculateDataRate);
} else if((StringUtils.isNotBlank(stationCode) && stationCode.substring(2,3).equals("X")) && (StringUtils.isNotBlank(stationType) && stationType.equals("SPALAX")) ) {
//切割台站编码 如果 第三个字符是 X 并且 台站类型是 SPALAX
mRate = spalaxcalc(calculateDataRate);
} else if(StringUtils.isNotBlank(stationCode) && stationCode.substring(2,3).equals("P")) {
//切割台站编码 如果 第三个字符是 P
mRate = particulatecalc(calculateDataRate);
}
return mRate;
}
public Rate saunacalc(CalculateDataRate calculateDataRate){
Rate mRate = new Rate();
//获取特殊台站相关集合
Map<String, Specialpara> mSpecialparam = calculateDataRate.getMSpecialparam();
//根据台站名称获取对应的 参数信息
Specialpara param = mSpecialparam.get(calculateDataRate.getMStationCode());
//获取日期间隔
double dayspan = calculateDataRate.getMParameter().getDayspan();
//获取当前日期
LocalDateTime currentTime = LocalDateTime.now();
//当前日期转换成字符串格式
String curDateTime = currentTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//当前日期减去对应的时间间隔 获取开始时间 并转换成字符串格式
String pretime = currentTime.minusDays(Long.valueOf((long) dayspan)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//获取台站id
String stationId = calculateDataRate.getMStationId();
//判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率
ProvisionData phdfProvisionRate = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String number = param.getPhdf().getNumber();
phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSauna(curDateTime, pretime, number, stationId);
}else {
String number = calculateDataRate.getMParameter().getPhdfSauna().getNumber();
phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSauna(curDateTime, pretime, number, stationId);
}
if (Objects.nonNull(phdfProvisionRate)){
Double phdf_offered = phdfProvisionRate.getDataRate();
mRate.setPhdfOffered(phdf_offered);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率
ProvisionData phdfProvisionEfficiency = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String liveLow = param.getPhdf().getLiveLow();
String liveHigh = param.getPhdf().getLiveHigh();
String quantity = param.getPhdf().getQuantity();
String mdc = param.getPhdf().getMdc();
String collectLow = param.getPhdf().getCollectLow();
String collectHigh = param.getPhdf().getCollectHigh();
String xeVolume = param.getPhdf().getXeVolume();
String nuclideName = param.getPhdf().getNuclideName();
String liveQc = param.getPhdf().getLiveQc();
String number = param.getPhdf().getNumber();
phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencySauna(liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, curDateTime, pretime, number, stationId);
}else {
String liveLow = calculateDataRate.getMParameter().getPhdfSauna().getLiveLow();
String liveHigh = calculateDataRate.getMParameter().getPhdfSauna().getLiveHigh();
String quantity = calculateDataRate.getMParameter().getPhdfSauna().getQuantity();
String mdc = calculateDataRate.getMParameter().getPhdfSauna().getMdc();
String collectLow = calculateDataRate.getMParameter().getPhdfSauna().getCollectLow();
String collectHigh = calculateDataRate.getMParameter().getPhdfSauna().getCollectHigh();
String xeVolume = calculateDataRate.getMParameter().getPhdfSauna().getXeVolume();
String nuclideName = calculateDataRate.getMParameter().getPhdfSauna().getNuclideName();
String liveQc = calculateDataRate.getMParameter().getPhdfSauna().getLiveQc();
String number = calculateDataRate.getMParameter().getPhdfSauna().getNumber();
phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencySauna(liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, curDateTime,pretime, number,stationId);
}
if (Objects.nonNull(phdfProvisionEfficiency)){
Double phdf_efficient = phdfProvisionEfficiency.getDataEfficiency();
mRate.setPhdfEfficient(phdf_efficient);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率
ProvisionData phdProvisionRate = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String number = param.getPhd().getNumber();
phdProvisionRate = calCulStationDataService.findPhdProvisionRateSauna(curDateTime, pretime, number, stationId);
}else {
String number = calculateDataRate.getMParameter().getPhdSauna().getNumber();
phdProvisionRate = calCulStationDataService.findPhdProvisionRateSauna(curDateTime, pretime, number, stationId);
}
if (Objects.nonNull(phdProvisionRate)){
Double phd_offered = phdProvisionRate.getDataRate();
mRate.setPhdOffered(phd_offered);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率
ProvisionData phdProvisionEfficiency = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String liveLow = param.getPhd().getLiveLow();
String liveHigh = param.getPhd().getLiveHigh();
String quantity = param.getPhd().getQuantity();
String mdc = param.getPhd().getMdc();
String collectLow = param.getPhd().getCollectLow();
String collectHigh = param.getPhd().getCollectHigh();
String xeVolume = param.getPhd().getXeVolume();
String nuclideName = param.getPhd().getNuclideName();
String liveQc = param.getPhd().getLiveQc();
String number = param.getPhd().getNumber();
phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySauna(liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, curDateTime, pretime, number, stationId);
}else {
String liveLow = calculateDataRate.getMParameter().getPhdSauna().getLiveLow();
String liveHigh = calculateDataRate.getMParameter().getPhdSauna().getLiveHigh();
String quantity = calculateDataRate.getMParameter().getPhdSauna().getQuantity();
String mdc = calculateDataRate.getMParameter().getPhdSauna().getMdc();
String collectLow = calculateDataRate.getMParameter().getPhdSauna().getCollectLow();
String collectHigh = calculateDataRate.getMParameter().getPhdSauna().getCollectHigh();
String xeVolume = calculateDataRate.getMParameter().getPhdSauna().getXeVolume();
String nuclideName = calculateDataRate.getMParameter().getPhdSauna().getNuclideName();
String liveQc = calculateDataRate.getMParameter().getPhdSauna().getLiveQc();
String number = calculateDataRate.getMParameter().getPhdSauna().getNumber();
phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySauna(liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, curDateTime,pretime, number,stationId);
}
if (Objects.nonNull(phdProvisionEfficiency)){
Double phd_efficient = phdProvisionEfficiency.getDataEfficiency();
mRate.setPhdEfficient(phd_efficient);
}
//判断当前台站编码是否属于特殊计算的台站 计算MET的数据提供率
ProvisionData metProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String met = param.getMet();
metProvision = calCulStationDataService.findMetProvisionSauna(curDateTime, pretime, met, stationId);
}else {
String met = calculateDataRate.getMParameter().getMet();
metProvision = calCulStationDataService.findMetProvisionSauna(curDateTime, pretime, met, stationId);
}
if (Objects.nonNull(metProvision)){
Double met = metProvision.getDataRate();
mRate.setMet(met);
}
//判断当前台站编码是否属于特殊计算的台站 计算SOH的数据提供率
ProvisionData sohProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String soh = param.getSoh();
sohProvision = calCulStationDataService.findSohProvisionSauna(curDateTime, pretime, soh, stationId);
}else {
String soh = calculateDataRate.getMParameter().getSoh();
sohProvision = calCulStationDataService.findSohProvisionSauna(curDateTime, pretime, soh, stationId);
}
if (Objects.nonNull(sohProvision)){
Double soh = sohProvision.getDataRate();
mRate.setSoh(soh);
}
//计算SPHD+MET+SOH数据提供率 SPHD部分
ProvisionData sphdProvision = calCulStationDataService.findSphdProvisionSauna(curDateTime, pretime, stationId);
String SPHD_NUM = "0";
if (Objects.nonNull(sphdProvision)) {
SPHD_NUM = sphdProvision.getDataNumber().toString();
}
//获取SPHD+MET+SOH数据提供率 MET部分
ProvisionData sphdMetProvision = calCulStationDataService.findSphdMetProvisionSauna(curDateTime, pretime, stationId);
String MET_NUM = "0";
if (Objects.nonNull(sphdMetProvision)) {
MET_NUM = sphdMetProvision.getDataNumber().toString();
}
//判断当前台站编码是否属于特殊计算的台站 计算SOH的数据提供率
ProvisionData sphdMetSohProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String sphdMetSoh = param.getSphdMetSoh();
sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionSauna(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
}else {
String sphdMetSoh = calculateDataRate.getMParameter().getSphdMetSoh().getSaunaEverydaynums();
sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionSauna(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
}
if (Objects.nonNull(sphdMetSohProvision)){
Double phd_met_soh = sphdMetSohProvision.getDataRate();
mRate.setPhdMetSoh(phd_met_soh);
}
return mRate;
}
public Rate spalaxcalc(CalculateDataRate calculateDataRate){
Rate mRate = new Rate();
//获取特殊台站相关集合
Map<String, Specialpara> mSpecialparam = calculateDataRate.getMSpecialparam();
//根据台站名称获取对应的 参数信息
Specialpara param = mSpecialparam.get(calculateDataRate.getMStationCode());
//获取日期间隔
double dayspan = calculateDataRate.getMParameter().getDayspan();
//获取当前日期
LocalDateTime currentTime = LocalDateTime.now();
//当前日期转换成字符串格式
String curDateTime = currentTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//当前日期减去对应的时间间隔 获取开始时间 并转换成字符串格式
String pretime = currentTime.minusDays(Long.valueOf((long) dayspan)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//获取台站id
String stationId = calculateDataRate.getMStationId();
//判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率
ProvisionData phdfProvisionRate = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String number = param.getPhdf().getNumber();
phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSpalax(curDateTime, pretime, number, stationId);
}else {
String number = calculateDataRate.getMParameter().getPhdfSpalax().getNumber();
phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSpalax(curDateTime, pretime, number, stationId);
}
if (Objects.nonNull(phdfProvisionRate)) {
Double phdf_offered = phdfProvisionRate.getDataRate();
mRate.setPhdfOffered(phdf_offered);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率
ProvisionData phdfProvisionEfficiency = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String liveLow = param.getPhdf().getLiveLow();
String liveHigh = param.getPhdf().getLiveHigh();
String quantity = param.getPhdf().getQuantity();
String collectLow = param.getPhdf().getCollectLow();
String collectHigh = param.getPhdf().getCollectHigh();
String liveQc = param.getPhdf().getLiveQc();
String number = param.getPhdf().getNumber();
phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId);
}else {
String liveLow = calculateDataRate.getMParameter().getPhdfSpalax().getLiveLow();
String liveHigh = calculateDataRate.getMParameter().getPhdfSpalax().getLiveHigh();
String quantity = calculateDataRate.getMParameter().getPhdfSpalax().getQuantity();
String collectLow = calculateDataRate.getMParameter().getPhdfSpalax().getCollectLow();
String collectHigh = calculateDataRate.getMParameter().getPhdfSpalax().getCollectHigh();
String liveQc = calculateDataRate.getMParameter().getPhdfSpalax().getLiveQc();
String number = calculateDataRate.getMParameter().getPhdfSpalax().getNumber();
phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime,pretime, number,stationId);
}
if (Objects.nonNull(phdfProvisionEfficiency)) {
Double phdf_efficient = phdfProvisionEfficiency.getDataEfficiency();
mRate.setPhdfEfficient(phdf_efficient);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率
ProvisionData phdProvisionRate = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String number = param.getPhd().getNumber();
phdProvisionRate = calCulStationDataService.findPhdProvisionRateSpalax(curDateTime, pretime, number, stationId);
}else {
String number = calculateDataRate.getMParameter().getPhdSpalax().getNumber();
phdProvisionRate = calCulStationDataService.findPhdProvisionRateSpalax(curDateTime, pretime, number, stationId);
}
if (Objects.nonNull(phdProvisionRate)) {
Double phd_offered = phdProvisionRate.getDataRate();
mRate.setPhdOffered(phd_offered);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率
ProvisionData phdProvisionEfficiency = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String liveLow = param.getPhd().getLiveLow();
String liveHigh = param.getPhd().getLiveHigh();
String quantity = param.getPhd().getQuantity();
String collectLow = param.getPhd().getCollectLow();
String collectHigh = param.getPhd().getCollectHigh();
String liveQc = param.getPhd().getLiveQc();
String number = param.getPhd().getNumber();
phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId);
}else {
String liveLow = calculateDataRate.getMParameter().getPhdSpalax().getLiveLow();
String liveHigh = calculateDataRate.getMParameter().getPhdSpalax().getLiveHigh();
String quantity = calculateDataRate.getMParameter().getPhdSpalax().getQuantity();
String collectLow = calculateDataRate.getMParameter().getPhdSpalax().getCollectLow();
String collectHigh = calculateDataRate.getMParameter().getPhdSpalax().getCollectHigh();
String liveQc = calculateDataRate.getMParameter().getPhdSpalax().getLiveQc();
String number = calculateDataRate.getMParameter().getPhdSpalax().getNumber();
phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime,pretime, number,stationId);
}
if (Objects.nonNull(phdProvisionEfficiency)) {
Double phd_efficient = phdProvisionEfficiency.getDataEfficiency();
mRate.setPhdEfficient(phd_efficient);
}
//判断当前台站编码是否属于特殊计算的台站 计算MET的数据提供率
ProvisionData metProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String met = param.getMet();
metProvision = calCulStationDataService.findMetProvisionSpalax(curDateTime, pretime, met, stationId);
}else {
String met = calculateDataRate.getMParameter().getMet();
metProvision = calCulStationDataService.findMetProvisionSpalax(curDateTime, pretime, met, stationId);
}
if (Objects.nonNull(metProvision)) {
Double met = metProvision.getDataRate();
mRate.setMet(met);
}
//判断当前台站编码是否属于特殊计算的台站 计算SOH的数据提供率
ProvisionData sohProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String soh = param.getSoh();
sohProvision = calCulStationDataService.findSohProvisionSpalax(curDateTime, pretime, soh, stationId);
}else {
String soh = calculateDataRate.getMParameter().getSoh();
sohProvision = calCulStationDataService.findSohProvisionSpalax(curDateTime, pretime, soh, stationId);
}
if (Objects.nonNull(sohProvision)) {
Double soh = sohProvision.getDataRate();
mRate.setSoh(soh);
}
//计算SPHD+MET+SOH数据提供率 SPHD部分
ProvisionData sphdProvision = calCulStationDataService.findSphdProvisionSpalax(curDateTime, pretime, stationId);
String SPHD_NUM = "0";
if (Objects.nonNull(sphdProvision)) {
SPHD_NUM = sphdProvision.getDataNumber().toString();
}
//获取SPHD+MET+SOH数据提供率 MET部分
ProvisionData sphdMetProvision = calCulStationDataService.findSphdMetProvisionSpalax(curDateTime, pretime, stationId);
String MET_NUM = "0";
if (Objects.nonNull(sphdMetProvision)){
MET_NUM = sphdMetProvision.getDataNumber().toString();
}
//判断当前台站编码是否属于特殊计算的台站 计算SOH的数据提供率
ProvisionData sphdMetSohProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String sphdMetSoh = param.getSphdMetSoh();
sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionSpalax(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
}else {
String sphdMetSoh = calculateDataRate.getMParameter().getSphdMetSoh().getSpalaxEverydaynums();
sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionSpalax(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
}
if (Objects.nonNull(sphdMetSohProvision)){
Double phd_met_soh = sphdMetSohProvision.getDataRate();
mRate.setPhdMetSoh(phd_met_soh);
}
return mRate;
}
public Rate particulatecalc(CalculateDataRate calculateDataRate){
Rate mRate = new Rate();
//获取特殊台站相关集合
Map<String, Specialpara> mSpecialparam = calculateDataRate.getMSpecialparam();
//根据台站名称获取对应的 参数信息
Specialpara param = mSpecialparam.get(calculateDataRate.getMStationCode());
//获取日期间隔
double dayspan = calculateDataRate.getMParameter().getDayspan();
//获取当前日期
LocalDateTime currentTime = LocalDateTime.now();
//当前日期转换成字符串格式
String curDateTime = currentTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//当前日期减去对应的时间间隔 获取开始时间 并转换成字符串格式
String pretime = currentTime.minusDays(Long.valueOf((long) dayspan)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//获取台站id
String stationId = calculateDataRate.getMStationId();
//判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率
ProvisionData phdfProvisionRate = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String number = param.getPhdf().getNumber();
phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateParticulate(curDateTime, pretime, number, stationId);
}else {
String number = calculateDataRate.getMParameter().getPhdfParticulate().getNumber();
phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateParticulate(curDateTime, pretime, number, stationId);
}
if (Objects.nonNull(phdfProvisionRate)) {
Double phdf_offered = phdfProvisionRate.getDataRate();
mRate.setPhdfOffered(phdf_offered);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率
ProvisionData phdfProvisionEfficiency = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String liveLow = param.getPhdf().getLiveLow();
String liveHigh = param.getPhdf().getLiveHigh();
String quantity = param.getPhdf().getQuantity();
String collectLow = param.getPhdf().getCollectLow();
String collectHigh = param.getPhdf().getCollectHigh();
String number = param.getPhdf().getNumber();
phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number, stationId);
}else {
String liveLow = calculateDataRate.getMParameter().getPhdfParticulate().getLiveLow();
String liveHigh = calculateDataRate.getMParameter().getPhdfParticulate().getLiveHigh();
String quantity = calculateDataRate.getMParameter().getPhdfParticulate().getQuantity();
String collectLow = calculateDataRate.getMParameter().getPhdfParticulate().getCollectLow();
String collectHigh = calculateDataRate.getMParameter().getPhdfParticulate().getCollectHigh();
String number = calculateDataRate.getMParameter().getPhdfParticulate().getNumber();
phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime,pretime, number,stationId);
}
if (Objects.nonNull(phdfProvisionEfficiency)) {
Double phdf_efficient = phdfProvisionEfficiency.getDataEfficiency();
mRate.setPhdfEfficient(phdf_efficient);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率
ProvisionData phdProvisionRate = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String number = param.getPhd().getNumber();
phdProvisionRate = calCulStationDataService.findPhdProvisionRateParticulate(curDateTime, pretime, number, stationId);
}else {
String number = calculateDataRate.getMParameter().getPhdParticulate().getNumber();
phdProvisionRate = calCulStationDataService.findPhdProvisionRateParticulate(curDateTime, pretime, number, stationId);
}
if (Objects.nonNull(phdProvisionRate)){
Double phd_offered = phdProvisionRate.getDataRate();
mRate.setPhdOffered(phd_offered);
}
//判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率
ProvisionData phdProvisionEfficiency = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String liveLow = param.getPhd().getLiveLow();
String liveHigh = param.getPhd().getLiveHigh();
String quantity = param.getPhd().getQuantity();
String collectLow = param.getPhd().getCollectLow();
String collectHigh = param.getPhd().getCollectHigh();
String number = param.getPhd().getNumber();
phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number, stationId);
}else {
String liveLow = calculateDataRate.getMParameter().getPhdParticulate().getLiveLow();
String liveHigh = calculateDataRate.getMParameter().getPhdParticulate().getLiveHigh();
String quantity = calculateDataRate.getMParameter().getPhdParticulate().getQuantity();
String collectLow = calculateDataRate.getMParameter().getPhdParticulate().getCollectLow();
String collectHigh = calculateDataRate.getMParameter().getPhdParticulate().getCollectHigh();
String number = calculateDataRate.getMParameter().getPhdParticulate().getNumber();
phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number,stationId);
}
if (Objects.nonNull(phdProvisionEfficiency)) {
Double phd_efficient = phdProvisionEfficiency.getDataEfficiency();
mRate.setPhdEfficient(phd_efficient);
}
//判断当前台站编码是否属于特殊计算的台站 计算MET的数据提供率
ProvisionData metProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String met = param.getMet();
metProvision = calCulStationDataService.findMetProvisionParticulate(curDateTime, pretime, met, stationId);
}else {
String met = calculateDataRate.getMParameter().getMet();
metProvision = calCulStationDataService.findMetProvisionParticulate(curDateTime, pretime, met, stationId);
}
if (Objects.nonNull(metProvision)) {
Double met = metProvision.getDataRate();
mRate.setMet(met);
}
//判断当前台站编码是否属于特殊计算的台站 计算SOH的数据提供率
ProvisionData sohProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String soh = param.getSoh();
sohProvision = calCulStationDataService.findSohProvisionParticulate(curDateTime, pretime, soh, stationId);
}else {
String soh = calculateDataRate.getMParameter().getSoh();
sohProvision = calCulStationDataService.findSohProvisionParticulate(curDateTime, pretime, soh, stationId);
}
if (Objects.nonNull(sohProvision)) {
Double soh = sohProvision.getDataRate();
mRate.setSoh(soh);
}
//计算SPHD+MET+SOH数据提供率 SPHD部分
ProvisionData sphdProvision = calCulStationDataService.findSphdProvisionParticulate(curDateTime, pretime, stationId);
String SPHD_NUM = "0";
if (Objects.nonNull(sphdProvision)) {
SPHD_NUM = sphdProvision.getDataNumber().toString();
}
//获取SPHD+MET+SOH数据提供率 MET部分
ProvisionData sphdMetProvision = calCulStationDataService.findSphdMetProvisionParticulate(curDateTime, pretime, stationId);
String MET_NUM = "0";
if (Objects.nonNull(sphdMetProvision)) {
MET_NUM = sphdMetProvision.getDataNumber().toString();
}
//判断当前台站编码是否属于特殊计算的台站 计算SOH的数据提供率
ProvisionData sphdMetSohProvision = new ProvisionData();
if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) {
String sphdMetSoh = param.getSphdMetSoh();
sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionParticulate(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
}else {
String sphdMetSoh = calculateDataRate.getMParameter().getSphdMetSoh().getParticulateEverydaynums();
sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionParticulate(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
}
if (Objects.nonNull(sphdMetSohProvision)) {
Double phd_met_soh = sphdMetSohProvision.getDataRate();
mRate.setPhdMetSoh(phd_met_soh);
}
return mRate;
}
}

View File

@ -0,0 +1,936 @@
package org.jeecg.common;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.entity.data.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Slf4j
@Component
public class CalculateStationData {
@Value("${parameter.filePath}")
private String parameterFilePath;
/**
* 初始化配置信息
*/
public RateParam initParameter() {
try {
//文件路径
String filePath = parameterFilePath+ File.separator +"parameter.xml";
//声明一个实体类存储参数信息
RateParam mRateParam = new RateParam();
//创建一个文档解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//创建文档解析器
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
//读取xml文件生成一个文档
Document document = documentBuilder.parse(filePath);
//声明一个接收参数的实体类
Parameter mParameter = new Parameter();
//声明一个map 存储特殊的台站及台站相关参数
Map<String, Specialpara> specialparaMap = new HashMap<>();
//获取文档的根元素
Element element = document.getDocumentElement();
//获取根元素的子节点
NodeList docChildNodes = element.getChildNodes();
if (Objects.nonNull(docChildNodes) && docChildNodes.getLength()>0){
//遍历子节点信息
for(int i = 0; i < docChildNodes.getLength(); i++) {
//根据下标获取对应的节点信息
Node n = docChildNodes.item(i);
//判断节点名称是否是 DAYSPAN
if(n.getNodeName().equals("DAYSPAN")) {
// 获取节点的第一个子节点
Node childNode = n.getFirstChild();
//如果节点信息不为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
// 获取节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
// 如果属性信息不为空
if (Objects.nonNull(attributes)){
// 遍历获取属性值
for (int j=0; j< attributes.getLength(); j++){
// 获取属性
Node item = attributes.item(j);
// 如果属性名是 dayspan
if(item.getNodeName().equals("dayspan")) {
//赋值dayspan
mParameter.setDayspan(Double.parseDouble(item.getNodeValue()));
}
}
}
}
// 获取下一个节点
childNode = childNode.getNextSibling();
}
} else if(n.getNodeName().equals("WARNING")) {// 判断节点名称是否是 WARNING
// 获取节点第一个子节点
Node childNode = n.getFirstChild();
// 子节点不为空
while(Objects.nonNull(childNode)) {
// 判断子节点的名称是否是 item
if(childNode.getNodeName().equals("item")) {
// 获取子节点的 属性
NamedNodeMap attributes = childNode.getAttributes();
// 子节点属性不为空
if (Objects.nonNull(attributes)){
// 遍历获取属性值
for (int j =0; j<attributes.getLength(); j++){
// 获取某一个节点的属性
Node item = attributes.item(j);
if(item.getNodeName().equals("excellent")) {
// 属性的名称是 excellent
mParameter.setExcellent(Double.parseDouble(item.getNodeValue()));
} else if(item.getNodeName().equals("good")) {
// 属性的名称是 good
mParameter.setGood(Double.parseDouble(item.getNodeValue()));
}
}
}
}
// 获取下一个节点
childNode = childNode.getNextSibling();
}
} else if(n.getNodeName().equals("PHDF")) { // 判断节点名称是否是 PHDF
// 获取节点的所有子节点信息
NodeList phdfChildNodes = n.getChildNodes();
// 判断子节点数据是否为空
if (Objects.nonNull(phdfChildNodes) && phdfChildNodes.getLength()>0){
//遍历子节点数据
for(int j = 0; j < phdfChildNodes.getLength(); j++) {
// 获取子节点数据
Node node = phdfChildNodes.item(j);
// 判断子节点名称是否是 SAUNA
if(node.getNodeName().equals("SAUNA")) {
// 获取子节点下的第一个节点信息
Node childNode = node.getFirstChild();
// 声明一个实体类存储参数信息
StationTypeData typeData = new StationTypeData();
// 判断子节点是否为空
while(Objects.nonNull(childNode)) {
// 判断子节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取子节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
// 判断属性是否为空
if (Objects.nonNull(attributes)){
// 遍历获取属性值
for (int k=0; k<attributes.getLength(); k++){
// 获取当前下标的属性
Node item = attributes.item(k);
if(item.getNodeName().equals("collect_low")) {
// 如果属性名是 collect_low
typeData.setCollectLow(item.getNodeValue());
} else if(item.getNodeName().equals("collect_high")) {
// 如果属性名是 collect_high
typeData.setCollectHigh(item.getNodeValue());
} else if(item.getNodeName().equals("live_low")) {
// 如果属性名是 live_low
typeData.setLiveLow(item.getNodeValue());
} else if(item.getNodeName().equals("live_high")) {
// 如果属性名是 live_high
typeData.setLiveHigh(item.getNodeValue());
} else if(item.getNodeName().equals("quantity")) {
// 如果属性名是 quantity
typeData.setQuantity(item.getNodeValue());
} else if(item.getNodeName().equals("xe_volume")) {
// 如果属性名是 xe_volume
typeData.setXeVolume(item.getNodeValue());
} else if(item.getNodeName().equals("mdc")) {
// 如果属性名是 mdc
typeData.setMdc(item.getNodeValue());
} else if(item.getNodeName().equals("nuclide_name")) {
// 如果属性名是 nuclide_name
typeData.setNuclideName(item.getNodeValue());
} else if(item.getNodeName().equals("live_qc")) {
// 如果属性名是 live_qc
typeData.setLiveQc(item.getNodeValue());
} else if(item.getNodeName().equals("number")) {
// 如果属性名是 number
typeData.setNumber(item.getNodeValue());
}
}
}
}
// 获取当前节点的下一个节点
childNode = childNode.getNextSibling();
}
// 当前属性参数封装进 phdf-sauna中
mParameter.setPhdfSauna(typeData);
} else if(node.getNodeName().equals("SPALAX")) {// 判断当前节点名称是否是 SPALAX
// 获取第一个子节点
Node childNode = node.getFirstChild();
// 声明一个台站参数实体类
StationTypeData typeData = new StationTypeData();
// 如果子节点不为空
while(Objects.nonNull(childNode)) {
// 判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
// 获取子节点的属性
NamedNodeMap attributes = childNode.getAttributes();
// 属性不为空
if (Objects.nonNull(attributes)){
// 遍历节点的属性信息
for (int k=0; k<attributes.getLength(); k++){
// 获取属性内容
Node item = attributes.item(k);
if(item.getNodeName().equals("collect_low")) {
// 如果属性名称是 collect_low
typeData.setCollectLow(item.getNodeValue());
} else if(item.getNodeName().equals("collect_high")) {
// 如果属性名称是 collect_high
typeData.setCollectHigh(item.getNodeValue());
} else if(item.getNodeName().equals("live_low")) {
// 如果属性名称是 live_low
typeData.setLiveLow(item.getNodeValue());
} else if(item.getNodeName().equals("live_high")) {
// 如果属性名称是 live_high
typeData.setLiveHigh(item.getNodeValue());
} else if(item.getNodeName().equals("quantity")) {
// 如果属性名称是 quantity
typeData.setQuantity(item.getNodeValue());
} else if(item.getNodeName().equals("live_qc")) {
// 如果属性名称是 live_qc
typeData.setLiveQc(item.getNodeValue());
} else if(item.getNodeName().equals("number")) {
// 如果属性名称是 number
typeData.setNumber(item.getNodeValue());
}
}
}
}
// 获取下一个子节点
childNode = childNode.getNextSibling();
}
//当前台站参数信息存入 phdf-spalax
mParameter.setPhdfSpalax(typeData);
} else if(node.getNodeName().equals("PARTICULATE")) {// 判断节点名称是否是 PARTICULATE
// 获取当前节点的第一个子节点
Node childNode = node.getFirstChild();
// 声明一个台站参数实体类
StationTypeData typeData = new StationTypeData();
// 判断节点是否为空
while(Objects.nonNull(childNode)) {
// 判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
// 获取节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
// 判断属性信息是否为空
if (Objects.nonNull(attributes)){
//遍历属性信息
for (int k=0; k<attributes.getLength(); k++){
// 获取某节点的属性信息
Node item = attributes.item(k);
if(item.getNodeName().equals("collect_low")) {
//属性名称是 collect_low
typeData.setCollectLow(item.getNodeValue());
} else if(item.getNodeName().equals("collect_high")) {
//属性名称是 collect_high
typeData.setCollectHigh(item.getNodeValue());
} else if(item.getNodeName().equals("live_low")) {
//属性名称是 live_low
typeData.setLiveLow(item.getNodeValue());
} else if(item.getNodeName().equals("live_high")) {
//属性名称是 live_high
typeData.setLiveHigh(item.getNodeValue());
} else if(item.getNodeName().equals("quantity")) {
//属性名称是 quantity
typeData.setQuantity(item.getNodeValue());
} else if(item.getNodeName().equals("number")) {
//属性名称是 number
typeData.setNumber(item.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
//台站参数信息赋值phdf-particulate
mParameter.setPhdfParticulate(typeData);
}
}
}
} else if(n.getNodeName().equals("PHD")) {// 判断节点名称是否是 PHD
// 获取所有子节点数据
NodeList phdChildNodes = n.getChildNodes();
//判断子节点数据是否为空
if (Objects.nonNull(phdChildNodes) && phdChildNodes.getLength()>0){
//遍历子节点数据
for(int j = 0; j < phdChildNodes.getLength(); j++) {
// 获取子节点信息
Node node = phdChildNodes.item(j);
//判断子节点名称是否是 SAUNA
if(node.getNodeName().equals("SAUNA")) {
//获取子节点下的第一个节点
Node childNode = node.getFirstChild();
//声明一个台站参数实体类
StationTypeData typeData = new StationTypeData();
//如果子节点不为空
while(Objects.nonNull(childNode)) {
//判断节点的名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
//节点属性信息不为空
if (Objects.nonNull(attributes)){
//遍历属性信息
for (int k=0; k< attributes.getLength(); k++){
//获取属性
Node item = attributes.item(k);
if(item.getNodeName().equals("collect_low")) {
// 判断属性名称是 collect_low
typeData.setCollectLow(item.getNodeValue());
} else if(item.getNodeName().equals("collect_high")) {
// 判断属性名称是 collect_high
typeData.setCollectHigh(item.getNodeValue());
} else if(item.getNodeName().equals("live_low")) {
// 判断属性名称是 live_low
typeData.setLiveLow(item.getNodeValue());
} else if(item.getNodeName().equals("live_high")) {
// 判断属性名称是 live_high
typeData.setLiveHigh(item.getNodeValue());
} else if(item.getNodeName().equals("quantity")) {
// 判断属性名称是 quantity
typeData.setQuantity(item.getNodeValue());
} else if(item.getNodeName().equals("xe_volume")) {
// 判断属性名称是 xe_volume
typeData.setXeVolume(item.getNodeValue());
} else if(item.getNodeName().equals("mdc")) {
// 判断属性名称是 mdc
typeData.setMdc(item.getNodeValue());
} else if(item.getNodeName().equals("nuclide_name")) {
// 判断属性名称是 nuclide_name
typeData.setNuclideName(item.getNodeValue());
} else if(item.getNodeName().equals("live_qc")) {
// 判断属性名称是 live_qc
typeData.setLiveQc(item.getNodeValue());
} else if(item.getNodeName().equals("number")) {
// 判断属性名称是 number
typeData.setNumber(item.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
//台站参数赋值 phd-sauna
mParameter.setPhdSauna(typeData);
} else if(node.getNodeName().equals("SPALAX")) {//判断节点名称是否是 spalax
//获取节点下的第一个子节点
Node childNode = node.getFirstChild();
//声明一个 台站参数实体类
StationTypeData typeData = new StationTypeData();
//判断子节点是否为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
//判断属性是否为空
if (Objects.nonNull(attributes)){
//遍历属性信息
for (int k=0; k< attributes.getLength(); k++){
//获取属性信息
Node item = attributes.item(k);
if(item.getNodeName().equals("collect_low")) {
//属性名称为 collect_low
typeData.setCollectLow(item.getNodeValue());
} else if(item.getNodeName().equals("collect_high")) {
//属性名称为 collect_high
typeData.setCollectHigh(item.getNodeValue());
} else if(item.getNodeName().equals("live_low")) {
//属性名称为 live_low
typeData.setLiveLow(item.getNodeValue());
} else if(item.getNodeName().equals("live_high")) {
//属性名称为 live_high
typeData.setLiveHigh(item.getNodeValue());
} else if(item.getNodeName().equals("quantity")) {
//属性名称为 quantity
typeData.setQuantity(item.getNodeValue());
} else if(item.getNodeName().equals("live_qc")) {
//属性名称为 live_qc
typeData.setLiveQc(item.getNodeValue());
} else if(item.getNodeName().equals("number")) {
//属性名称为 number
typeData.setNumber(item.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
//台站参数赋值 phd-spalax
mParameter.setPhdSpalax(typeData);
} else if(node.getNodeName().equals("PARTICULATE")) {// 判断节点名称是否是 PARTICULATE
//获取节点下的第一个节点
Node childNode = node.getFirstChild();
//声明台站参数实体类
StationTypeData typeData = new StationTypeData();
//判断子节点是否为空
while(Objects.nonNull(childNode)) {
//判断子节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取子节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
//判断属性是否为空
if (Objects.nonNull(attributes)){
//遍历属性信息
for (int k=0; k < attributes.getLength(); k++){
//获取节点的属性
Node item = attributes.item(k);
if(item.getNodeName().equals("collect_low")) {
//属性名称是 collect_low
typeData.setCollectLow(item.getNodeValue());
} else if(item.getNodeName().equals("collect_high")) {
//属性名称是 collect_high
typeData.setCollectHigh(item.getNodeValue());
} else if(item.getNodeName().equals("live_low")) {
//属性名称是 live_low
typeData.setLiveLow(item.getNodeValue());
} else if(item.getNodeName().equals("live_high")) {
//属性名称是 live_high
typeData.setLiveHigh(item.getNodeValue());
} else if(item.getNodeName().equals("quantity")) {
//属性名称是 quantity
typeData.setQuantity(item.getNodeValue());
} else if(item.getNodeName().equals("number")) {
//属性名称是 number
typeData.setNumber(item.getNodeValue());
}
}
}
}
// 获取下一个节点
childNode = childNode.getNextSibling();
}
//台站参数赋值 phd-particulate
mParameter.setPhdParticulate(typeData);
}
}
}
} else if(n.getNodeName().equals("MET")) {// 判断节点名称是否是 met
//获取第一个子节点
Node childNode = n.getFirstChild();
//判断节点是否为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes)){
//遍历节点属性信息
for (int k=0; k< attributes.getLength(); k++){
//获取节点属性
Node item = attributes.item(k);
//判断属性名称是否是 number
if(item.getNodeName().equals("number")) {
mParameter.setMet(item.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
} else if (n.getNodeName().equals("SOH")) {// 判断节点名称是否是 SOH
//获取第一个子节点
Node childNode = n.getFirstChild();
//判断节点是否为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes)){
//遍历节点属性信息
for (int k=0; k< attributes.getLength(); k++){
//获取节点属性
Node item = attributes.item(k);
//判断属性名称是否是 number
if(item.getNodeName().equals("number")) {
mParameter.setSoh(item.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
} else if(n.getNodeName().equals("SPHD_MET_SOH")) {// 判断节点名称 是否是 SPHD_MET_SOH
//获取节点的子节点集合
NodeList sphdmetsohChildNodes = n.getChildNodes();
//声明一个实体类封装属性信息
SphdMetSoh sphdMetSoh = new SphdMetSoh();
// 遍历子节点集合
for(int j = 0; j < sphdmetsohChildNodes.getLength(); j++) {
//获取子节点数据
Node node = sphdmetsohChildNodes.item(j);
//判断子节点名称是否是 SAUNA
if(node.getNodeName().equals("SAUNA")) {
//获取第一个节点
Node childNode = node.getFirstChild();
//判断节点是否为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes)){
//遍历节点属性信息
for (int k=0; k< attributes.getLength(); k++){
//获取节点属性
Node item = attributes.item(k);
//判断属性名称是否是 number
if(item.getNodeName().equals("number")) {
sphdMetSoh.setSaunaEverydaynums(item.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
} else if(node.getNodeName().equals("SPALAX")) { // 判断节点名称是否是 SPALAX
//获取第一个节点
Node childNode = node.getFirstChild();
//判断节点是否为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点的属性信息
NamedNodeMap attributes = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes)){
//遍历节点属性信息
for (int k=0; k< attributes.getLength(); k++){
//获取节点属性
Node item = attributes.item(k);
//判断属性名称是否是 number
if(item.getNodeName().equals("number")) {
sphdMetSoh.setSpalaxEverydaynums(item.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
} else if(node.getNodeName().equals("PARTICULATE")) {// 判断节点名称是否是 PARTICULATE
//获取第一个子节点
Node childNode = node.getFirstChild();
//判断节点是否为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点属性
NamedNodeMap attributes = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes)){
//遍历节点属性
for (int k=0; k< attributes.getLength(); k++){
//获取属性
Node item = attributes.item(k);
//判断属性名称是否是 number
if(item.getNodeName().equals("number")) {
sphdMetSoh.setParticulateEverydaynums(item.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
}
// sphdMetSoh 属性信息赋值给 参数实体
mParameter.setSphdMetSoh(sphdMetSoh);
}
} else if (n.getNodeName().equals("SPECIAL")) {// 判断节点名称是否是 SPECIAL
//获取节点的子节点集合
NodeList specialChildNodes = n.getChildNodes();
//遍历子节点
for(int j=0; j<specialChildNodes.getLength(); j++) {
//获取节点信息
Node node = specialChildNodes.item(j);
//声明台站名称
String stationName = "";
//判断节点名称是否是 STATION
if(node.getNodeName().equals("STATION")) {
//获取节点的属性信息
NamedNodeMap attributes = node.getAttributes();
//声明一个实体类 封装台站参数信息
Specialpara spePara = new Specialpara();
//判断属性信息是否为空
if (Objects.nonNull(attributes)){
for (int k=0; k<attributes.getLength(); k++){
//获取属性信息
Node item = attributes.item(k);
//判断属性名称是否是 name
if(item.getNodeName().equals("name")) {
stationName = item.getNodeValue();
}
}
//获取子节点集合
NodeList parameterNodes = node.getChildNodes();
//遍历子节点
for(int k=0; k<parameterNodes.getLength(); k++) {
//获取子节点
Node node1 = parameterNodes.item(k);
//判断子节点名称是否是 PHDF
if(node1.getNodeName().equals("PHDF")) {
//获取第一个子节点
Node childNode = node1.getFirstChild();
//声明一个 台站参数实体类
StationTypeData typeData = new StationTypeData();
//判断子节点是否为空
while (Objects.nonNull(childNode)) {
//判断子节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取子节点的属性
NamedNodeMap attributes1 = childNode.getAttributes();
//判断属性是否为空
if (Objects.nonNull(attributes1)){
//遍历属性
for (int m=0; m<attributes1.getLength(); m++){
//获取属性
Node item1 = attributes1.item(m);
if(item1.getNodeName().equals("collect_low")) {
//判断属性名称是否是 collect_low
typeData.setCollectLow(item1.getNodeValue());
} else if(item1.getNodeName().equals("collect_high")) {
//判断属性名称是否是 collect_high
typeData.setCollectHigh(item1.getNodeValue());
} else if(item1.getNodeName().equals("live_low")) {
//判断属性名称是否是 live_low
typeData.setLiveLow(item1.getNodeValue());
} else if(item1.getNodeName().equals("live_high")) {
//判断属性名称是否是 live_high
typeData.setLiveHigh(item1.getNodeValue());
} else if(item1.getNodeName().equals("quantity")) {
//判断属性名称是否是 xe_volume
typeData.setQuantity(item1.getNodeValue());
} else if(item1.getNodeName().equals("xe_volume")) {
//判断属性名称是否是 xe_volume
typeData.setXeVolume(item1.getNodeValue());
} else if(item1.getNodeName().equals("mdc")) {
//判断属性名称是否是 mdc
typeData.setMdc(item1.getNodeValue());
} else if(item1.getNodeName().equals("nuclide_name")) {
//判断属性名称是否是 nuclide_name
typeData.setNuclideName(item1.getNodeValue());
} else if(item1.getNodeName().equals("live_qc")) {
//判断属性名称是否是 live_qc
typeData.setLiveQc(item1.getNodeValue());
} else if(item1.getNodeName().equals("number")) {
//判断属性名称是否是 number
typeData.setNumber(item1.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
//将参数实体赋值给 phdf
spePara.setPhdf(typeData);
} else if(node1.getNodeName().equals("PHD")) {// 判断子节点名称是否是 PHD
//获取第一个子节点
Node childNode = node1.getFirstChild();
//声明一个台站参数实体
StationTypeData typeData = new StationTypeData();
//判断子节点是否为空
while (Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点的属性
NamedNodeMap attributes1 = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes1)){
//遍历属性
for (int m=0; m<attributes1.getLength(); m++){
//获取节点属性
Node item1 = attributes1.item(m);
if(item1.getNodeName().equals("collect_low")) {
// 判断节点名称是否是 collect_low
typeData.setCollectLow(item1.getNodeValue());
} else if(item1.getNodeName().equals("collect_high")) {
// 判断节点名称是否是 collect_high
typeData.setCollectHigh(item1.getNodeValue());
} else if(item1.getNodeName().equals("live_low")) {
// 判断节点名称是否是 live_low
typeData.setLiveLow(item1.getNodeValue());
} else if(item1.getNodeName().equals("live_high")) {
// 判断节点名称是否是 live_high
typeData.setLiveHigh(item1.getNodeValue());
} else if(item1.getNodeName().equals("quantity")) {
// 判断节点名称是否是 quantity
typeData.setQuantity(item1.getNodeValue());
} else if(item1.getNodeName().equals("xe_volume")) {
// 判断节点名称是否是 xe_volume
typeData.setXeVolume(item1.getNodeValue());
} else if(item1.getNodeName().equals("mdc")) {
// 判断节点名称是否是 mdc
typeData.setMdc(item1.getNodeValue());
} else if(item1.getNodeName().equals("nuclide_name")) {
// 判断节点名称是否是 nuclide_name
typeData.setNuclideName(item1.getNodeValue());
} else if(item1.getNodeName().equals("live_qc")) {
// 判断节点名称是否是 live_qc
typeData.setLiveQc(item1.getNodeValue());
} else if(item1.getNodeName().equals("number")) {
// 判断节点名称是否是 number
typeData.setNumber(item1.getNodeValue());
}
}
}
}
//获取下一个节点
childNode = childNode.getNextSibling();
}
//节点参数赋值 phd
spePara.setPhd(typeData);
} else if(node1.getNodeName().equals("SOH")) {// 判断节点名称是否是 SOH
//获取第一个子节点
Node childNode = node1.getFirstChild();
//判断子节点是否为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点属性
NamedNodeMap attributes1 = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes1)){
//遍历节点属性
for (int m=0; m<attributes1.getLength(); m++){
//获取属性
Node item1 = attributes1.item(m);
//判断属性名称是否是 number
if(item1.getNodeName().equals("number")) {
spePara.setSoh(item1.getNodeValue());
}
}
}
}
childNode = childNode.getNextSibling();
}
} else if(node1.getNodeName().equals("MET")) {// 判断节点名称是否是 MET
//获取第一个子节点
Node childNode = node1.getFirstChild();
//判断子节点是否为空
while(Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点的属性
NamedNodeMap attributes1 = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes1)){
//遍历节点属性
for (int m=0; m<attributes1.getLength(); m++){
//获取节点属性
Node item1 = attributes1.item(m);
//判断节点名称是否是 number
if(item1.getNodeName().equals("number")) {
spePara.setMet(item1.getNodeValue());
}
}
}
}
childNode = childNode.getNextSibling();
}
} else if(node1.getNodeName().equals("SPHD_MET_SOH")) {// 判断子节点名称是否是 SPHD_MET_SOH
//获取节点的第一个子节点
Node childNode = node1.getFirstChild();
//判断子节点是否为空
while (Objects.nonNull(childNode)) {
//判断节点名称是否是 item
if(childNode.getNodeName().equals("item")) {
//获取节点属性
NamedNodeMap attributes1 = childNode.getAttributes();
//判断节点属性是否为空
if (Objects.nonNull(attributes1)){
//遍历节点属性
for (int m=0; m< attributes1.getLength(); m++){
//获取属性
Node item1 = attributes1.item(m);
//判断属性名称是否是 number
if(item1.getNodeName().equals("number")) {
spePara.setSphdMetSoh(item1.getNodeValue());
}
}
}
}
childNode = childNode.getNextSibling();
}
}
}
}
//台站名称作为 key 台站参数属性作为 value 存入一个map
specialparaMap.put(stationName, spePara);
}
} // end for
//参数信息赋值给参数
mRateParam.setParameter(mParameter);
//特殊台站信息赋值给 特殊台站map
mRateParam.setSpecialparam(specialparaMap);
} // end else if
}
}
return mRateParam;
} catch (ParserConfigurationException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (SAXException e) {
throw new RuntimeException(e);
}
}
/**
* 多线程获取台站数据的提供率和有效率
* @param stationInfos 台站信息列表
*/
public List<StationInfo> mutiThreadGetStationInfo(List<StationInfo> stationInfos, RateParam mRateParam){
// 声明当前开始执行时间
Date startTime = new Date();
//声明一个数组用于接收最后的结果情况
List<StationInfo> finallySta = new ArrayList<>();
//声明一个线程池
ThreadPoolExecutor poolExecutor = null;
//声明一个CountDownLatch监听是否完成全部线程
CountDownLatch countDownLatch = null;
//初始化线程数量=0
int threadNum = 0;
//获取当前设备的理想线程数
int idealnum = Runtime.getRuntime().availableProcessors();
//获取需要处理的台站信息数量
int works = stationInfos.size();
// 如果需要工作处理的数量 小于 理想线程数
if(works < idealnum) {
//将需要处理的工作数量赋值给线程数按照需要处理的工作数量处理数据
threadNum = works;
} else {
//否则按照理想线程数 处理数据
threadNum = idealnum;
}
// 如果线程数不等于0
if (threadNum != 0){
//初始化线程池
poolExecutor = new ThreadPoolExecutor(threadNum, threadNum, 5, TimeUnit.MINUTES, new LinkedBlockingQueue<>());
}else {
return stationInfos;
}
// 线程数 等于 需要处理的台站数量
if( threadNum == works ){
countDownLatch = new CountDownLatch(threadNum);
//遍历台站信息
for (int i=0 ; i<stationInfos.size(); i++){
//获取台站信息
StationInfo stationInfo = stationInfos.get(i);
//声明一个实体类
GetStationinfoAndDataRate stationinfoAndDataRate = new GetStationinfoAndDataRate();
stationinfoAndDataRate.setMOriginalstationsinfo(stationInfo);
stationinfoAndDataRate.setMRateparam(mRateParam);
CalculateDataRateThread calculateDataRateThread = new CalculateDataRateThread(finallySta, stationinfoAndDataRate, countDownLatch);
//调用线程计算率值
poolExecutor.execute(calculateDataRateThread);
}
try {
countDownLatch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
} finally {
//关闭线程池
if(poolExecutor != null) {
poolExecutor.shutdownNow();
}
}
}else { // 线程数 不等于 需要处理的台站数量时
//将台站数组按照线程数分成多组
//声明一个变量 看当前台站信息需要分为多少组
int Tworks = 0;
//如果当前需要处理的台站数量是线程数量的整数倍
if(works%threadNum == 0){
//变量值 等于 需要处理的台站数量与线程数的商
Tworks = works/threadNum; // 300 30 10
} else {
// 变量值 等于 需要处理的台站数量与线程数的商 +1
Tworks = works/threadNum + 1; // 301 30 11
}
//遍历需要查询的组数
for (int i=0; i<Tworks; i++){
//根据每组的台站大小 分割台站数组
List<StationInfo> infos = new ArrayList<>();
int startIndex = i * threadNum;
int endIndex = ((i + 1) * threadNum) - 1;
//判断当前结束下标是否超出台站数量 没有超出说明还在范围内 正常截取数组
if (endIndex <= stationInfos.size()){
infos = stationInfos.subList(startIndex, endIndex);
}else {//如果超出台站数量 则从截取开始下标 截取到台站数组的最后一个下标
infos = stationInfos.subList(startIndex, stationInfos.size()-1);
}
countDownLatch = new CountDownLatch(infos.size());
//遍历当前组的台站并进行计算
for (int j=0; j<infos.size(); j++){
//获取台站信息
StationInfo stationInfo = infos.get(j);
//声明一个实体类
GetStationinfoAndDataRate stationinfoAndDataRate = new GetStationinfoAndDataRate();
stationinfoAndDataRate.setMOriginalstationsinfo(stationInfo);
stationinfoAndDataRate.setMRateparam(mRateParam);
CalculateDataRateThread calculateDataRateThread = new CalculateDataRateThread(finallySta, stationinfoAndDataRate, countDownLatch);
//调用线程计算率值
poolExecutor.execute(calculateDataRateThread);
}
if (i==Tworks-1){
try {
countDownLatch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
} finally {
//关闭线程池
if(poolExecutor != null) {
poolExecutor.shutdownNow();
}
}
}else {
try {
countDownLatch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
//声明一个结束时间
Date endTime = new Date();
long diffTime = (endTime.getTime() - startTime.getTime())/1000;
log.info("获取台站信息和数据率总耗时:"+diffTime);
return finallySta;
}
}

View File

@ -1,19 +1,14 @@
package org.jeecg.modules.controller;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.Point;
import org.jeecg.modules.entity.PointVo;
import org.jeecg.modules.entity.StationOperation;
import org.jeecg.modules.service.IStationOperationService;
import org.jeecg.modules.system.entity.GardsNuclearfacility;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
@ -65,4 +60,10 @@ public class StationOperationController {
return stationOperationService.getDataReceivingStatus(userId);
}
@GetMapping("getDataProvisionEfficiency")
@ApiOperation(value = "查询台站数据提供率及有效率", notes = "查询台站数据提供率及有效率")
public Result getDataProvisionEfficiency(){
return stationOperationService.getDataProvisionEfficiency();
}
}

View File

@ -0,0 +1,43 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
@Data
public class CalculateDataRate implements Serializable {
public double mExcellent;
public double mGood;
private Parameter mParameter;
private Map<String, Specialpara> mSpecialparam;
private String mCurtime;
private String mPretime;
private String mStationId;
private String mStationCode;
private String mStationType;
double mDayspan; // 天数用来统计数据接受率和有效率
private Rate mRate;
private StationInfo mStationinfo;
public void setParameter(RateParam mRateparam){
this.mParameter = mRateparam.getParameter();
this.mSpecialparam = mRateparam.getSpecialparam();
this.mDayspan = mRateparam.getParameter().getDayspan();
this.mExcellent = mRateparam.getParameter().getExcellent();
this.mGood = mRateparam.getParameter().getGood();
}
}

View File

@ -0,0 +1,20 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetStationinfoAndDataRate implements Serializable {
CalculateDataRate mcalcu;
StationInfo mOriginalstationsinfo;
StationInfo mFinallystationsinfo;
private Rate mRate;
private RateParam mRateparam;
}

View File

@ -0,0 +1,40 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
@Data
public class Parameter implements Serializable {
private double dayspan;
private double excellent;
private double good;
private StationTypeData phdfSauna;
private StationTypeData phdfSpalax;
private StationTypeData phdfParticulate;
private StationTypeData phdSauna;
private StationTypeData phdSpalax;
private StationTypeData phdParticulate;
private String met;
private String soh;
private SphdMetSoh sphdMetSoh;
public Parameter(){
dayspan = 0;
excellent = 0;
good = 0;
}
}

View File

@ -0,0 +1,16 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
@Data
public class ProvisionData implements Serializable {
private Integer dataNumber;
private double dataRate;
private double dataEfficiency;
}

View File

@ -0,0 +1,35 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
@Data
public class Rate implements Serializable {
private double phdfOffered;
private double phdfEfficient;
private double phdOffered;
private double phdEfficient;
private double met;
private double soh;
private double phdMetSoh;
public Rate() {
phdfOffered = 0;
phdfEfficient = 0;
phdOffered = 0;
phdEfficient = 0;
met = 0;
soh = 0;
phdMetSoh = 0;
}
}

View File

@ -0,0 +1,15 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
@Data
public class RateParam implements Serializable {
private Parameter parameter;
private Map<String, Specialpara> specialparam;
}

View File

@ -0,0 +1,20 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
@Data
public class Specialpara implements Serializable {
private StationTypeData phdf;
private StationTypeData phd;
private String met;
private String soh;
private String sphdMetSoh;
}

View File

@ -0,0 +1,16 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
@Data
public class SphdMetSoh implements Serializable {
private String saunaEverydaynums;
private String spalaxEverydaynums;
private String particulateEverydaynums;
}

View File

@ -0,0 +1,38 @@
package org.jeecg.modules.entity.data;
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;
}

View File

@ -0,0 +1,30 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import java.io.Serializable;
@Data
public class StationTypeData implements Serializable {
private String collectLow;
private String collectHigh;
private String liveLow;
private String liveHigh;
private String quantity;
private String xeVolume;
private String mdc;
private String nuclideName;
private String liveQc;
private String number;
}

View File

@ -0,0 +1,65 @@
package org.jeecg.modules.mapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.entity.data.ProvisionData;
import org.jeecg.modules.entity.data.StationInfo;
public interface CalCulStationInfoMapper {
StationInfo getStationInfo(@Param("stationCode") String stationCode);
ProvisionData findPhdfProvisionRateSauna(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId);
ProvisionData findPhdfProvisionEfficiencySauna(@Param("liveLow") String liveLow,@Param("liveHigh") String liveHigh,@Param("quantity") String quantity,@Param("mdc") String mdc,@Param("collectLow") String collectLow,@Param("collectHigh") String collectHigh,@Param("xeVolume") String xeVolume,@Param("nuclideName") String nuclideName,@Param("liveQc") String liveQc,@Param("curDateTime") String curDateTime,@Param("pretime") String pretime,@Param("number") String number,@Param("stationId") String stationId);
ProvisionData findPhdProvisionRateSauna(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId);
ProvisionData findPhdProvisionEfficiencySauna(@Param("liveLow") String liveLow,@Param("liveHigh") String liveHigh,@Param("quantity") String quantity,@Param("mdc") String mdc,@Param("collectLow") String collectLow,@Param("collectHigh") String collectHigh,@Param("xeVolume") String xeVolume,@Param("nuclideName") String nuclideName,@Param("liveQc") String liveQc,@Param("curDateTime") String curDateTime,@Param("pretime") String pretime,@Param("number") String number,@Param("stationId") String stationId);
ProvisionData findMetProvisionSauna(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("met") String met, @Param("stationId") String stationId);
ProvisionData findSohProvisionSauna(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("soh") String soh, @Param("stationId") String stationId);
ProvisionData findSphdProvisionSauna(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("stationId") String stationId);
ProvisionData findSphdMetProvisionSauna(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("stationId") String stationId);
ProvisionData findSphdMetSohProvisionSauna(@Param("SPHD_NUM") String SPHD_NUM, @Param("MET_NUM") String MET_NUM, @Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("sphdMetSoh") String sphdMetSoh, @Param("stationId") String stationId);
ProvisionData findPhdfProvisionRateSpalax(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId);
ProvisionData findPhdfProvisionEfficiencySpalax(@Param("liveLow") String liveLow,@Param("liveHigh") String liveHigh,@Param("quantity") String quantity, @Param("collectLow") String collectLow,@Param("collectHigh") String collectHigh, @Param("liveQc") String liveQc,@Param("curDateTime") String curDateTime,@Param("pretime") String pretime,@Param("number") String number,@Param("stationId") String stationId);
ProvisionData findPhdProvisionRateSpalax(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId);
ProvisionData findPhdProvisionEfficiencySpalax(@Param("liveLow") String liveLow,@Param("liveHigh") String liveHigh,@Param("quantity") String quantity, @Param("collectLow") String collectLow,@Param("collectHigh") String collectHigh, @Param("liveQc") String liveQc,@Param("curDateTime") String curDateTime,@Param("pretime") String pretime,@Param("number") String number,@Param("stationId") String stationId);
ProvisionData findMetProvisionSpalax(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("met") String met, @Param("stationId") String stationId);
ProvisionData findSohProvisionSpalax(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("soh") String soh, @Param("stationId") String stationId);
ProvisionData findSphdProvisionSpalax(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("stationId") String stationId);
ProvisionData findSphdMetProvisionSpalax(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("stationId") String stationId);
ProvisionData findSphdMetSohProvisionSpalax(@Param("SPHD_NUM") String SPHD_NUM, @Param("MET_NUM") String MET_NUM, @Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("sphdMetSoh") String sphdMetSoh, @Param("stationId") String stationId);
ProvisionData findPhdfProvisionRateParticulate(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId);
ProvisionData findPhdfProvisionEfficiencyParticulate(@Param("liveLow") String liveLow,@Param("liveHigh") String liveHigh,@Param("quantity") String quantity, @Param("collectLow") String collectLow,@Param("collectHigh") String collectHigh, @Param("curDateTime") String curDateTime,@Param("pretime") String pretime,@Param("number") String number,@Param("stationId") String stationId);
ProvisionData findPhdProvisionRateParticulate(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId);
ProvisionData findPhdProvisionEfficiencyParticulate(@Param("liveLow") String liveLow,@Param("liveHigh") String liveHigh,@Param("quantity") String quantity, @Param("collectLow") String collectLow,@Param("collectHigh") String collectHigh, @Param("curDateTime") String curDateTime,@Param("pretime") String pretime,@Param("number") String number,@Param("stationId") String stationId);
ProvisionData findMetProvisionParticulate(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("met") String met, @Param("stationId") String stationId);
ProvisionData findSohProvisionParticulate(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("soh") String soh, @Param("stationId") String stationId);
ProvisionData findSphdProvisionParticulate(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("stationId") String stationId);
ProvisionData findSphdMetProvisionParticulate(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("stationId") String stationId);
ProvisionData findSphdMetSohProvisionParticulate(@Param("SPHD_NUM") String SPHD_NUM, @Param("MET_NUM") String MET_NUM, @Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("sphdMetSoh") String sphdMetSoh, @Param("stationId") String stationId);
}

View File

@ -0,0 +1,398 @@
<?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.modules.mapper.CalCulStationInfoMapper">
<select id="getStationInfo" resultType="org.jeecg.modules.entity.data.StationInfo">
SELECT
station_id as id,
STATION_CODE as stationCode,
COUNTRY_CODE as countryCode,
TYPE as type,
LON as lon,
LAT as lat,
DESCRIPTION as description,
STATUS as status
FROM
CONFIGURATION.GARDS_STATIONS
<where>
station_code= #{stationCode}
</where>
</select>
<select id="findPhdfProvisionRateSauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
select
count(sdata.station_id) dataNumber,
ROUND(count(sdata.station_id)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss'))*${number})*100,2) dataRate
from ORIGINAL.GARDS_SAMPLE_DATA sdata
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id
<where>
substr(sta.station_code, 3,1)='X'
and sta.type='SAUNA'
and sdata.spectral_qualifie='FULL' and sdata.SAMPLE_TYPE='B'
and sdata.station_id = #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdfProvisionEfficiencySauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT
(sum(CASE WHEN ROUND( sdata.acquisition_live_sec / 60 / 60.00 ) BETWEEN ${liveLow} AND ${liveHigh}
AND sdata.quantity > ${quantity}
AND xe.MDC > ${mdc}
AND ( to_number( SDATA.COLLECT_STOP - SDATA.COLLECT_START ) * 24 ) BETWEEN ${collectLow} AND ${collectHigh}
AND aux.xe_volume > ${xeVolume}
AND xe.nuclide_name = '${nuclideName}'
AND sdata.data_type = 'S' THEN 1 ELSE 0
END)
+ sum( CASE WHEN sdata.acquisition_live_sec > ${liveQc} AND sdata.data_type = 'Q' THEN 1 ELSE 0 END )
+ sum( CASE WHEN ROUND( sdata.acquisition_live_sec / 60 / 60.00, 2 ) BETWEEN ${liveLow} AND ${liveHigh}
AND sdata.data_type = 'G' THEN 1 ELSE 0 END)) dataNumber,
ROUND((sum(CASE WHEN ROUND( sdata.acquisition_live_sec / 60 / 60.00 ) BETWEEN ${liveLow} AND ${liveHigh}
AND sdata.quantity > ${quantity}
AND xe.MDC > ${mdc}
AND ( to_number( SDATA.COLLECT_STOP - SDATA.COLLECT_START ) * 24 ) BETWEEN ${collectLow} AND ${collectHigh}
AND aux.xe_volume > ${xeVolume}
AND xe.nuclide_name = '${nuclideName}'
AND sdata.data_type = 'S' THEN 1 ELSE 0 END )
+ sum( CASE WHEN sdata.acquisition_live_sec > ${liveQc} AND sdata.data_type = 'Q' THEN 1 ELSE 0 END )
+ sum( CASE WHEN ROUND( sdata.acquisition_live_sec / 60 / 60.00, 2 ) BETWEEN ${liveLow} AND ${liveHigh}
AND sdata.data_type = 'G' THEN 1 ELSE 0 END)) / ( to_number( TO_DATE( '${curDateTime}', 'YYYY-MM-DD hh24:mi:ss' ) - TO_DATE( '${pretime}', 'YYYY-MM-DD hh24:mi:ss' ) + 1 ) * ${number} ) * 100,2) 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 = #{stationId}
AND to_char( sdata.ACQUISITION_START, 'YYYY-MM-DD hh24:mi:ss' ) BETWEEN #{pretime} AND #{curDateTime}
</where>
</select>
<select id="findPhdProvisionRateSauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
select
(sum(case when SDATA.DATA_TYPE='S' then 1 else 0 end)+sum(case when SDATA.DATA_TYPE='G' then 1 else 0 end)+sum(case when SDATA.DATA_TYPE='Q' and SDATA.SPECTRAL_QUALIFIE='FULL' then 1 else 0 end)) dataNumber,
ROUND(count(sdata.station_id)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${number})*100,2) dataRate
from ORIGINAL.GARDS_SAMPLE_DATA sdata
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id
<where>
substr( sta.station_code, 3,1)='X'
and sta.type='SAUNA'
and SDATA.SAMPLE_TYPE='B'
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdProvisionEfficiencySauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
select (sum(case when ROUND(sdata.acquisition_live_sec/60/60.00) BETWEEN ${liveLow} and ${liveHigh}
and sdata.quantity> ${quantity} and xe.MDC> ${mdc}
and (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START)*24) BETWEEN ${collectLow} and ${collectHigh}
and aux.xe_volume> ${xeVolume} and xe.nuclide_name= '${nuclideName}' and sdata.data_type='S' then 1 else 0 end)
+ sum(case when sdata.acquisition_live_sec> ${liveQc} and sdata.data_type='Q' and sdata.spectral_qualifie='FULL' then 1 else 0 end)
+ sum(case when ROUND(sdata.acquisition_live_sec/60/60.00,2) BETWEEN ${liveLow} and ${liveHigh} and sdata.data_type='G' then 1 else 0 end)) dataNumber,
ROUND((sum(case when ROUND(sdata.acquisition_live_sec/60/60.00) BETWEEN ${liveLow} and ${liveHigh} and sdata.quantity>${quantity} and xe.MDC> ${mdc}
and (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START)*24) BETWEEN ${collectLow} and ${collectHigh}
and aux.xe_volume> ${xeVolume} and xe.nuclide_name= '${nuclideName}' and sdata.data_type='S' then 1 else 0 end)
+ sum(case when sdata.acquisition_live_sec> ${liveQc} and sdata.data_type='Q' and sdata.spectral_qualifie='FULL' then 1 else 0 end)
+ sum(case when ROUND(sdata.acquisition_live_sec/60/60.00,2) BETWEEN ${liveLow} and ${liveHigh} and sdata.data_type='G' then 1 else 0 end))/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${number})*100,2) 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 sta.type='SAUNA'
and sdata.station_id = #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findMetProvisionSauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT COUNT(STATION_ID) dataNumber,
ROUND(COUNT(STATION_ID)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${met})*100,2) dataRate
FROM ORIGINAL.GARDS_MET_DATA mdata
<where>
STATION_ID = '${stationId}'
AND TO_CHAR(MDATA.START_TIME, 'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSohProvisionSauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT COUNT(STATION_ID) dataNumber,
ROUND(COUNT(STATION_ID)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${soh})*100,2)dataRate
FROM ORIGINAL.GARDS_SOH_DATA mdata
<where>
STATION_ID = #{stationId}
AND TO_CHAR(MDATA.START_TIME, 'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdProvisionSauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
select (SUM(case when SDATA.DATA_TYPE = 'S' then 1 else 0 end)
+ sum(case when SDATA.DATA_TYPE = 'Q' and SDATA.SPECTRAL_QUALIFIE = 'FULL' then 1 else 0 end)
+ sum(case when SDATA.DATA_TYPE = 'G' then 1 else 0 end)) dataNumber
from ORIGINAL.GARDS_SAMPLE_DATA sdata
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id
<where>
substr( sta.station_code,3,1)='X'
and sta.type='SAUNA'
and SDATA.SAMPLE_TYPE = 'B'
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdMetProvisionSauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT count(MET.STATION_ID) dataNumber FROM ORIGINAL.GARDS_MET_DATA met
<where>
MET.STATION_ID = #{stationId}
and to_char(MET.START_TIME,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdMetSohProvisionSauna" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT count(SOH.STATION_ID) + ${SPHD_NUM} + ${MET_NUM} dataNumber,
round((count(SOH.STATION_ID)+2507)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${sphdMetSoh})*100,2) dataRate
FROM ORIGINAL.GARDS_SOH_DATA soh
<where>
SOH.STATION_ID = #{stationId}
and to_char(SOH.START_TIME,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdfProvisionRateSpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
select count(sdata.station_id) dataNumber,
ROUND(count(sdata.station_id)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)*${number})*100,2) dataRate
from ORIGINAL.GARDS_SAMPLE_DATA sdata
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id
<where>
sdata.spectral_qualifie='FULL'
and substr( sta.station_code, 3,1)='X' and SDATA.SAMPLE_TYPE='G'
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdfProvisionEfficiencySpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
select (sum(case when sdata.acquisition_live_sec> ${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 ${liveLow} and ${liveHigh}
and (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START)*24) BETWEEN ${collectLow} and ${collectHigh} and sdata.quantity>${quantity} then 1 else 0 end)) dataNumber,
ROUND((sum(case when sdata.acquisition_live_sec> ${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 ${liveLow} and ${liveHigh}
and (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START)*24) BETWEEN ${collectLow} and ${collectHigh}
and sdata.quantity>${quantity} then 1 else 0 end)) / (to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${number})*100,2) 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.type='SPALAX'
and SDATA.SAMPLE_TYPE='G'
and substr( sta.station_code, 3,1)='X'
and sdata.station_id=#{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdProvisionRateSpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
select (sum(case when SDATA.DATA_TYPE='S' then 1 else 0 end)+sum(case when SDATA.DATA_TYPE='Q' and SDATA.SPECTRAL_QUALIFIE='FULL' then 1 else 0 end)) dataNumber,
ROUND((sum(case when SDATA.DATA_TYPE='S' then 1 else 0 end)
+sum(case when SDATA.DATA_TYPE='Q' and SDATA.SPECTRAL_QUALIFIE='FULL' then 1 else 0 end))/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${number})*100,2) dataRate
from ORIGINAL.GARDS_SAMPLE_DATA sdata
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='G'
and sta.type='SPALAX'
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdProvisionEfficiencySpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
select (sum(case when sdata.acquisition_live_sec> ${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 ${liveLow} and ${liveHigh}
and (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START)*24) BETWEEN ${collectLow} and ${collectHigh} and sdata.quantity>${quantity} then 1 else 0 end)) dataNumber,
ROUND((sum(case when sdata.acquisition_live_sec> ${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 ${liveLow} and ${liveHigh}
and (to_number(SDATA.COLLECT_STOP - SDATA.COLLECT_START)*24) BETWEEN ${collectLow} and ${collectHigh} and sdata.quantity>${quantity} then 1 else 0 end))/ (to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${number})*100,2) dataEfficiency
from ORIGINAL.GARDS_SAMPLE_DATA sdata
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id
<where>
sta.type='SPALAX'
and SDATA.SAMPLE_TYPE='G'
and substr( sta.station_code, 3,1)='X'
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findMetProvisionSpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT COUNT(STATION_ID) dataNumber,
ROUND(COUNT(STATION_ID)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${met})*100,2)dataRate
FROM ORIGINAL.GARDS_MET_DATA mdata
<where>
STATION_ID = '${stationId}'
AND TO_CHAR(MDATA.START_TIME, 'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSohProvisionSpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT COUNT(STATION_ID) dataNumber,
ROUND(COUNT(STATION_ID)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${soh})*100,2)dataRate
FROM ORIGINAL.GARDS_SOH_DATA mdata
<where>
STATION_ID = #{stationId}
AND TO_CHAR(MDATA.START_TIME, 'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdProvisionSpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
select (SUM(case when SDATA.DATA_TYPE = 'S' then 1 else 0 end)
+ sum(case when SDATA.DATA_TYPE = 'Q' and SDATA.SPECTRAL_QUALIFIE = 'FULL' then 1 else 0 end)) dataNumber
from ORIGINAL.GARDS_SAMPLE_DATA sdata
<where>
SDATA.SAMPLE_TYPE = 'G'
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdMetProvisionSpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT count(MET.STATION_ID) dataNumber
FROM ORIGINAL.GARDS_MET_DATA met
<where>
MET.STATION_ID = #{stationId}
and to_char(MET.START_TIME,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdMetSohProvisionSpalax" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT count(SOH.STATION_ID)+ ${SPHD_NUM} + ${MET_NUM} dataNumber,
round((count(SOH.STATION_ID)+ ${SPHD_NUM} + ${MET_NUM} )/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${sphdMetSoh})*100,2) dataRate
FROM ORIGINAL.GARDS_SOH_DATA soh
<where>
SOH.STATION_ID = #{stationId}
and to_char(SOH.START_TIME,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdfProvisionRateParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
select count(sdata.station_id) dataNumber,
ROUND(count(sdata.station_id)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)*${number})*100,2) dataRate
from ORIGINAL.GARDS_SAMPLE_DATA sdata
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id
<where>
SDATA.SPECTRAL_QUALIFIE='FULL'
and substr( sta.station_code, 3,1)='P'
and SDATA.SAMPLE_TYPE='P'
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdfProvisionEfficiencyParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
select count(sdata.station_id) dataNumber,
ROUND(count(sdata.station_id)/(to_number(TO_DATE('${curDateTime}' ,'YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)*${number})*100,2) 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>
sdata.data_type='S'
and SDATA.SAMPLE_TYPE='P'
and sdata.spectral_qualifie='FULL'
and substr( sta.station_code, 3,1)='P'
and (sdata. acquisition_live_sec/60/60.00) BETWEEN #{liveLow} and #{liveHigh}
and (to_number(sdata.COLLECT_STOP - sdata.COLLECT_START)*24) BETWEEN #{collectLow} and #{collectHigh}
and sdata.quantity> #{quantity}
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdProvisionRateParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
select count(sdata.station_id) dataNumber,
ROUND(count(sdata.station_id)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${number})*100,2) dataRate
from ORIGINAL.GARDS_SAMPLE_DATA sdata
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id
<where>
SDATA.DATA_TYPE='S'
and substr( sta.station_code, 3,1)='P'
and SDATA.SAMPLE_TYPE='P'
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findPhdProvisionEfficiencyParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
select count(sdata.station_id) dataNumber,
ROUND(count(sdata.station_id)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${number})*100,2) dataEfficiency
from ORIGINAL.GARDS_SAMPLE_DATA sdata
LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id
<where>
sdata.data_type='S'
and SDATA.SAMPLE_TYPE='P'
and substr( sta.station_code, 3,1)='P'
and (sdata. acquisition_live_sec/60/60.00) BETWEEN #{liveLow} and #{liveHigh}
and (to_number(sdata.COLLECT_STOP - sdata.COLLECT_START)*24) BETWEEN #{collectLow} and #{collectHigh}
and sdata.quantity> #{quantity}
and sdata.station_id= #{stationId}
and to_char(sdata.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findMetProvisionParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT COUNT(STATION_ID) dataNumber,
ROUND(COUNT(STATION_ID)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${met})*100,2)dataRate
FROM ORIGINAL.GARDS_MET_DATA mdata
<where>
STATION_ID = '${stationId}'
AND TO_CHAR(MDATA.START_TIME, 'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSohProvisionParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT COUNT(STATION_ID) dataNumber,
ROUND(COUNT(STATION_ID)/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${soh})*100,2)dataRate
FROM ORIGINAL.GARDS_SOH_DATA mdata
<where>
STATION_ID = #{stationId}
AND TO_CHAR(MDATA.START_TIME, 'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdProvisionParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT count(SDATA.STATION_ID) dataNumber
FROM ORIGINAL.GARDS_SAMPLE_DATA sdata
<where>
sdata.STATION_ID = #{stationId}
and SDATA.DATA_TYPE = 'S'
and SDATA.SAMPLE_TYPE = 'P'
and to_char(SDATA.ACQUISITION_START,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdMetProvisionParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT count(MET.STATION_ID) dataNumber
FROM ORIGINAL.GARDS_MET_DATA met
<where>
MET.STATION_ID = #{stationId}
and to_char(MET.START_TIME,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
<select id="findSphdMetSohProvisionParticulate" resultType="org.jeecg.modules.entity.data.ProvisionData">
SELECT count(SOH.STATION_ID)+ ${SPHD_NUM} + ${MET_NUM} dataNumber,
round((count(SOH.STATION_ID)+ ${SPHD_NUM} + ${MET_NUM})/(to_number(TO_DATE('${curDateTime}','YYYY-MM-DD hh24:mi:ss')-TO_DATE('${pretime}','YYYY-MM-DD hh24:mi:ss')+1)* ${sphdMetSoh})*100,2) dataRate
FROM ORIGINAL.GARDS_SOH_DATA soh
<where>
SOH.STATION_ID = #{stationId}
and to_char(SOH.START_TIME,'YYYY-MM-DD hh24:mi:ss') BETWEEN #{pretime} and #{curDateTime}
</where>
</select>
</mapper>

View File

@ -0,0 +1,64 @@
package org.jeecg.modules.service;
import org.jeecg.modules.entity.data.ProvisionData;
import org.jeecg.modules.entity.data.StationInfo;
public interface ICalCulStationDataService {
StationInfo getStationInfo(String stationCode);
ProvisionData findPhdfProvisionRateSauna(String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdfProvisionEfficiencySauna(String liveLow, String liveHigh, String quantity, String mdc, String collectLow, String collectHigh, String xeVolume, String nuclideName, String liveQc, String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdProvisionRateSauna(String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdProvisionEfficiencySauna(String liveLow, String liveHigh, String quantity, String mdc, String collectLow, String collectHigh, String xeVolume, String nuclideName, String liveQc, String curDateTime, String pretime, String number, String stationId);
ProvisionData findMetProvisionSauna(String curDateTime, String pretime, String met, String stationId);
ProvisionData findSohProvisionSauna(String curDateTime, String pretime, String soh, String stationId);
ProvisionData findSphdProvisionSauna(String curDateTime, String pretime, String stationId);
ProvisionData findSphdMetProvisionSauna(String curDateTime, String pretime, String stationId);
ProvisionData findSphdMetSohProvisionSauna(String SPHD_NUM, String MET_NUM, String curDateTime, String pretime, String sphdMetSoh,String stationId);
ProvisionData findPhdfProvisionRateSpalax(String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdfProvisionEfficiencySpalax(String liveLow, String liveHigh, String quantity, String collectLow, String collectHigh, String liveQc, String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdProvisionRateSpalax(String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdProvisionEfficiencySpalax(String liveLow, String liveHigh, String quantity, String collectLow, String collectHigh, String liveQc, String curDateTime, String pretime, String number, String stationId);
ProvisionData findMetProvisionSpalax(String curDateTime, String pretime, String met, String stationId);
ProvisionData findSohProvisionSpalax(String curDateTime, String pretime, String soh, String stationId);
ProvisionData findSphdProvisionSpalax(String curDateTime, String pretime, String stationId);
ProvisionData findSphdMetProvisionSpalax(String curDateTime, String pretime, String stationId);
ProvisionData findSphdMetSohProvisionSpalax(String SPHD_NUM, String MET_NUM, String curDateTime, String pretime, String sphdMetSoh,String stationId);
ProvisionData findPhdfProvisionRateParticulate(String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdfProvisionEfficiencyParticulate(String liveLow, String liveHigh, String quantity, String collectLow, String collectHigh, String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdProvisionRateParticulate(String curDateTime, String pretime, String number, String stationId);
ProvisionData findPhdProvisionEfficiencyParticulate(String liveLow, String liveHigh, String quantity, String collectLow, String collectHigh, String curDateTime, String pretime, String number, String stationId);
ProvisionData findMetProvisionParticulate(String curDateTime, String pretime, String met, String stationId);
ProvisionData findSohProvisionParticulate(String curDateTime, String pretime, String soh, String stationId);
ProvisionData findSphdProvisionParticulate(String curDateTime, String pretime, String stationId);
ProvisionData findSphdMetProvisionParticulate(String curDateTime, String pretime, String stationId);
ProvisionData findSphdMetSohProvisionParticulate(String SPHD_NUM, String MET_NUM, String curDateTime, String pretime, String sphdMetSoh,String stationId);
}

View File

@ -2,10 +2,8 @@ package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.Point;
import org.jeecg.modules.entity.PointVo;
import org.jeecg.modules.entity.StationOperation;
import org.jeecg.modules.system.entity.GardsNuclearfacility;
import java.util.List;
@ -52,4 +50,10 @@ public interface IStationOperationService extends IService<StationOperation> {
*/
Result getDataReceivingStatus(String userId);
/**
* 获取台站数据的提供率及有效率
* @return
*/
Result getDataProvisionEfficiency();
}

View File

@ -0,0 +1,444 @@
package org.jeecg.modules.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.jeecg.modules.entity.data.ProvisionData;
import org.jeecg.modules.entity.data.StationInfo;
import org.jeecg.modules.mapper.CalCulStationInfoMapper;
import org.jeecg.modules.service.ICalCulStationDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("calCulStationDataService")
@DS("ora")
public class CalCulStationInfoServiceImpl implements ICalCulStationDataService {
@Autowired
private CalCulStationInfoMapper calCulStationInfoMapper;
@Override
public StationInfo getStationInfo(String stationCode) {
StationInfo stationInfo = calCulStationInfoMapper.getStationInfo(stationCode);
return stationInfo;
}
/**
* 查询phdf的数据提供率
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdfProvisionRateSauna(String curDateTime, String pretime, String number, String stationId) {
ProvisionData provisionRate = calCulStationInfoMapper.findPhdfProvisionRateSauna(curDateTime, pretime, number, stationId);
return provisionRate;
}
/**
* 查询phdf的数据提供率
* @param liveLow
* @param liveHigh
* @param quantity
* @param mdc
* @param collectLow
* @param collectHigh
* @param xeVolume
* @param nuclideName
* @param liveQc
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdfProvisionEfficiencySauna(String liveLow, String liveHigh, String quantity, String mdc, String collectLow, String collectHigh, String xeVolume, String nuclideName, String liveQc, String curDateTime, String pretime, String number, String stationId) {
ProvisionData provisionEfficiency = calCulStationInfoMapper.findPhdfProvisionEfficiencySauna(liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, curDateTime, pretime, number, stationId);
return provisionEfficiency;
}
/**
* 查询PHD数据提供率
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdProvisionRateSauna(String curDateTime, String pretime, String number, String stationId) {
ProvisionData provisionRate = calCulStationInfoMapper.findPhdProvisionRateSauna(curDateTime, pretime, number, stationId);
return provisionRate;
}
/**
* 查询PHD数据提供率
* @param liveLow
* @param liveHigh
* @param quantity
* @param mdc
* @param collectLow
* @param collectHigh
* @param xeVolume
* @param nuclideName
* @param liveQc
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdProvisionEfficiencySauna(String liveLow, String liveHigh, String quantity, String mdc, String collectLow, String collectHigh, String xeVolume, String nuclideName, String liveQc, String curDateTime, String pretime, String number, String stationId) {
ProvisionData provisionEfficiency = calCulStationInfoMapper.findPhdProvisionEfficiencySauna(liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, curDateTime, pretime, number, stationId);
return provisionEfficiency;
}
/**
* 查询MET数据提供率
* @param curDateTime
* @param pretime
* @param met
* @param stationId
* @return
*/
@Override
public ProvisionData findMetProvisionSauna(String curDateTime, String pretime, String met, String stationId) {
ProvisionData metProvision = calCulStationInfoMapper.findMetProvisionSauna(curDateTime, pretime, met, stationId);
return metProvision;
}
/**
* 查询SOH数据提供率
* @param curDateTime
* @param pretime
* @param soh
* @param stationId
* @return
*/
@Override
public ProvisionData findSohProvisionSauna(String curDateTime, String pretime, String soh, String stationId) {
ProvisionData sohProvision = calCulStationInfoMapper.findSohProvisionSauna(curDateTime, pretime, soh, stationId);
return sohProvision;
}
/**
* 查询SPHD MET SOh数据提供率 SPHD
* @param curDateTime
* @param pretime
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdProvisionSauna(String curDateTime, String pretime, String stationId) {
ProvisionData sphdProvision = calCulStationInfoMapper.findSphdProvisionSauna(curDateTime, pretime, stationId);
return sphdProvision;
}
/**
* 查询SPHD MET SOh数据提供率 MET
* @param curDateTime
* @param pretime
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdMetProvisionSauna(String curDateTime, String pretime, String stationId) {
ProvisionData sphdMetProvision = calCulStationInfoMapper.findSphdMetProvisionSauna(curDateTime, pretime, stationId);
return sphdMetProvision;
}
/**
* 查询SPHD MET SOh数据提供率
* @param SPHD_NUM
* @param MET_NUM
* @param curDateTime
* @param pretime
* @param sphdMetSoh
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdMetSohProvisionSauna(String SPHD_NUM, String MET_NUM, String curDateTime, String pretime, String sphdMetSoh, String stationId) {
ProvisionData sphdMetSohProvision = calCulStationInfoMapper.findSphdMetSohProvisionSauna(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
return sphdMetSohProvision;
}
/**
* 查询SPALAX PHDF数据提供率
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdfProvisionRateSpalax(String curDateTime, String pretime, String number, String stationId) {
ProvisionData phdfProvisionRate = calCulStationInfoMapper.findPhdfProvisionRateSpalax(curDateTime, pretime, number, stationId);
return phdfProvisionRate;
}
/**
* 查询SPALAX PHDF数据提供率
* @param liveLow
* @param liveHigh
* @param quantity
* @param collectLow
* @param collectHigh
* @param liveQc
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdfProvisionEfficiencySpalax(String liveLow, String liveHigh, String quantity, String collectLow, String collectHigh, String liveQc, String curDateTime, String pretime, String number, String stationId) {
ProvisionData phdfProvisionEfficiency = calCulStationInfoMapper.findPhdfProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId);
return phdfProvisionEfficiency;
}
/**
* 查询SPALAX PHD数据提供率
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdProvisionRateSpalax(String curDateTime, String pretime, String number, String stationId) {
ProvisionData phdProvisionRate = calCulStationInfoMapper.findPhdProvisionRateSpalax(curDateTime, pretime, number, stationId);
return phdProvisionRate;
}
/**
* 查询SPALAX PHD数据提供率
* @param liveLow
* @param liveHigh
* @param quantity
* @param collectLow
* @param collectHigh
* @param liveQc
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdProvisionEfficiencySpalax(String liveLow, String liveHigh, String quantity, String collectLow, String collectHigh, String liveQc, String curDateTime, String pretime, String number, String stationId) {
ProvisionData phdProvisionEfficiency = calCulStationInfoMapper.findPhdProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId);
return phdProvisionEfficiency;
}
/**
* 查询SPALAX MET数据提供率
* @param curDateTime
* @param pretime
* @param met
* @param stationId
* @return
*/
@Override
public ProvisionData findMetProvisionSpalax(String curDateTime, String pretime, String met, String stationId) {
ProvisionData metProvision = calCulStationInfoMapper.findMetProvisionSpalax(curDateTime, pretime, met, stationId);
return metProvision;
}
/**
* 查询SPALAX SOH数据提供率
* @param curDateTime
* @param pretime
* @param soh
* @param stationId
* @return
*/
@Override
public ProvisionData findSohProvisionSpalax(String curDateTime, String pretime, String soh, String stationId) {
ProvisionData sohProvision = calCulStationInfoMapper.findSohProvisionSpalax(curDateTime, pretime, soh, stationId);
return sohProvision;
}
/**
* 查询SPALAX SPHD MET SOH数据提供率 SPHD
* @param curDateTime
* @param pretime
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdProvisionSpalax(String curDateTime, String pretime, String stationId) {
ProvisionData sphdProvision = calCulStationInfoMapper.findSphdProvisionSpalax(curDateTime, pretime, stationId);
return sphdProvision;
}
/**
* 查询SPALAX SPHD MET SOH数据提供率 MET
* @param curDateTime
* @param pretime
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdMetProvisionSpalax(String curDateTime, String pretime, String stationId) {
ProvisionData sphdMetProvision = calCulStationInfoMapper.findSphdMetProvisionSpalax(curDateTime, pretime, stationId);
return sphdMetProvision;
}
/**
* 查询SPALAX SPHD MET SOH数据提供率
* @param SPHD_NUM
* @param MET_NUM
* @param curDateTime
* @param pretime
* @param sphdMetSoh
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdMetSohProvisionSpalax(String SPHD_NUM, String MET_NUM, String curDateTime, String pretime, String sphdMetSoh, String stationId) {
ProvisionData sphdMetSohProvision = calCulStationInfoMapper.findSphdMetSohProvisionSpalax(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
return sphdMetSohProvision;
}
/**
* 查询PARTICULATE PHDF数据提供率
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdfProvisionRateParticulate(String curDateTime, String pretime, String number, String stationId) {
ProvisionData phdfProvisionRate = calCulStationInfoMapper.findPhdfProvisionRateParticulate(curDateTime, pretime, number, stationId);
return phdfProvisionRate;
}
/**
* 查询PARTICULATE PHDF数据提供率
* @param liveLow
* @param liveHigh
* @param quantity
* @param collectLow
* @param collectHigh
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdfProvisionEfficiencyParticulate(String liveLow, String liveHigh, String quantity, String collectLow, String collectHigh, String curDateTime, String pretime, String number, String stationId) {
ProvisionData phdfProvisionEfficiency = calCulStationInfoMapper.findPhdfProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number, stationId);
return phdfProvisionEfficiency;
}
/**
* 查询PARTICULATE PHD数据提供率
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdProvisionRateParticulate(String curDateTime, String pretime, String number, String stationId) {
ProvisionData phdProvisionRate = calCulStationInfoMapper.findPhdProvisionRateParticulate(curDateTime, pretime, number, stationId);
return phdProvisionRate;
}
/**
* 查询PARTICULATE PHD数据提供率
* @param liveLow
* @param liveHigh
* @param quantity
* @param collectLow
* @param collectHigh
* @param curDateTime
* @param pretime
* @param number
* @param stationId
* @return
*/
@Override
public ProvisionData findPhdProvisionEfficiencyParticulate(String liveLow, String liveHigh, String quantity, String collectLow, String collectHigh, String curDateTime, String pretime, String number, String stationId) {
ProvisionData phdProvisionEfficiency = calCulStationInfoMapper.findPhdProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number, stationId);
return phdProvisionEfficiency;
}
/**
* 查询PARTICULATE MET数据提供率
* @param curDateTime
* @param pretime
* @param met
* @param stationId
* @return
*/
@Override
public ProvisionData findMetProvisionParticulate(String curDateTime, String pretime, String met, String stationId) {
ProvisionData metProvision = calCulStationInfoMapper.findMetProvisionParticulate(curDateTime, pretime, met, stationId);
return metProvision;
}
/**
* 查询PARTICULATE SOH数据提供率
* @param curDateTime
* @param pretime
* @param soh
* @param stationId
* @return
*/
@Override
public ProvisionData findSohProvisionParticulate(String curDateTime, String pretime, String soh, String stationId) {
ProvisionData sohProvision = calCulStationInfoMapper.findSohProvisionParticulate(curDateTime, pretime, soh, stationId);
return sohProvision;
}
/**
* 查询PARTICULATE SPHD MET SOH数据提供率 SPHD
* @param curDateTime
* @param pretime
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdProvisionParticulate(String curDateTime, String pretime, String stationId) {
ProvisionData sphdProvision = calCulStationInfoMapper.findSphdProvisionParticulate(curDateTime, pretime, stationId);
return sphdProvision;
}
/**
* 查询PARTICULATE SPHD MET SOH数据提供率 MET
* @param curDateTime
* @param pretime
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdMetProvisionParticulate(String curDateTime, String pretime, String stationId) {
ProvisionData sphdMetProvision = calCulStationInfoMapper.findSphdMetProvisionParticulate(curDateTime, pretime, stationId);
return sphdMetProvision;
}
/**
* 查询PARTICULATE SPHD MET SOH数据提供率
* @param SPHD_NUM
* @param MET_NUM
* @param curDateTime
* @param pretime
* @param sphdMetSoh
* @param stationId
* @return
*/
@Override
public ProvisionData findSphdMetSohProvisionParticulate(String SPHD_NUM, String MET_NUM, String curDateTime, String pretime, String sphdMetSoh, String stationId) {
ProvisionData sphdMetSohProvision = calCulStationInfoMapper.findSphdMetSohProvisionParticulate(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId);
return sphdMetSohProvision;
}
}

View File

@ -8,6 +8,7 @@ import com.spatial4j.core.context.SpatialContext;
import com.spatial4j.core.distance.DistanceUtils;
import com.spatial4j.core.shape.Rectangle;
import org.jeecg.common.CacheName;
import org.jeecg.common.CalculateStationData;
import org.jeecg.common.PointUtil;
import org.jeecg.common.StationTypeUtil;
import org.jeecg.common.api.vo.Result;
@ -16,13 +17,14 @@ import org.jeecg.modules.base.entity.GardsMetData;
import org.jeecg.modules.base.entity.GardsSampleData;
import org.jeecg.modules.base.entity.GardsSohData;
import org.jeecg.modules.entity.*;
import org.jeecg.modules.entity.data.RateParam;
import org.jeecg.modules.entity.data.StationInfo;
import org.jeecg.modules.mapper.*;
import org.jeecg.modules.service.ICacheTimeService;
import org.jeecg.modules.service.IStationOperationService;
import org.jeecg.modules.system.entity.GardsDetectors;
import org.jeecg.modules.system.entity.GardsNuclearfacility;
import org.jeecg.modules.system.entity.GardsStations;
import org.jeecg.modules.service.IStationOperationService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -30,7 +32,6 @@ import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
@Service("stationOperationService")
@ -49,6 +50,8 @@ public class StationOperationServiceImpl extends ServiceImpl<StationOperationMap
private SysUserFocusStationMapper sysUserFocusStationMapper;
@Autowired
private StationTypeUtil stationTypeUtil;
@Autowired
private CalculateStationData calCulateStationData;
private final SpatialContext spatialContext = SpatialContext.GEO;
@ -326,6 +329,33 @@ public class StationOperationServiceImpl extends ServiceImpl<StationOperationMap
return dest;
}
/**
* 获取外接正方形的最大最小经纬度
*
* @param radius 半径/距离
* @param longitude 圆心经度
* @param latitude 圆心纬度
*/
private Rectangle getRectangle(Double radius, Double longitude, Double latitude) {
return spatialContext.getDistCalc()
.calcBoxByDistFromPt(spatialContext.makePoint(longitude, latitude),
radius * DistanceUtils.KM_TO_DEG, spatialContext, null);
}
/***
* 球面中两点间的距离
*
* @param lon 设备经度
* @param lat 设备纬度
* @param longitude 圆心经度
* @param latitude 圆心纬度
* @return 返回距离单位km
*/
private double getDistance(Double lon, Double lat, double longitude, double latitude) {
return spatialContext.calcDistance(spatialContext.makePoint(longitude, latitude),
spatialContext.makePoint(lon, lat)) * DistanceUtils.DEG_TO_KM;
}
@Override
public Result getDataReceivingStatus(String userId) {
Result result = new Result();
@ -486,31 +516,25 @@ public class StationOperationServiceImpl extends ServiceImpl<StationOperationMap
return result;
}
/**
* 获取外接正方形的最大最小经纬度
*
* @param radius 半径/距离
* @param longitude 圆心经度
* @param latitude 圆心纬度
*/
private Rectangle getRectangle(Double radius, Double longitude, Double latitude) {
return spatialContext.getDistCalc()
.calcBoxByDistFromPt(spatialContext.makePoint(longitude, latitude),
radius * DistanceUtils.KM_TO_DEG, spatialContext, null);
}
/***
* 球面中两点间的距离
*
* @param lon 设备经度
* @param lat 设备纬度
* @param longitude 圆心经度
* @param latitude 圆心纬度
* @return 返回距离单位km
*/
private double getDistance(Double lon, Double lat, double longitude, double latitude) {
return spatialContext.calcDistance(spatialContext.makePoint(longitude, latitude),
spatialContext.makePoint(lon, lat)) * DistanceUtils.DEG_TO_KM;
@Override
public Result getDataProvisionEfficiency() {
Result result = new Result();
//获取所有的台站信息
HashMap<String, GardsStations> stationInfoMap = (HashMap<String, GardsStations>) redisUtil.get("stationInfoMap");
//获取所有的台站信息
List<GardsStations> stations = stationInfoMap.values().stream().collect(Collectors.toList());
List<StationInfo> stationInfos = new ArrayList<>();
for (GardsStations gardsStations:stations) {
StationInfo stationInfo = new StationInfo();
stationInfo.setStationCode(gardsStations.getStationCode());
stationInfo.setCountryCode(gardsStations.getCountryCode());
stationInfos.add(stationInfo);
}
RateParam mRateParam = calCulateStationData.initParameter();
List<StationInfo> stationInfoList = calCulateStationData.mutiThreadGetStationInfo(stationInfos,mRateParam);
result.setSuccess(true);
result.setResult(stationInfoList);
return result;
}
}

View File

@ -1,16 +1,11 @@
package org.jeecg.common.util;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.net.ftp.FTPClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
@Component
@Slf4j

View File

@ -4,21 +4,14 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.base.entity.GardsMetData;
import org.jeecg.modules.base.entity.GardsSampleData;
import org.jeecg.modules.base.entity.GardsSohData;
import org.jeecg.modules.service.*;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("webStatistics")

View File

@ -7,8 +7,6 @@ import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
@Data

View File

@ -7,7 +7,6 @@ import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
@Data

View File

@ -1,7 +1,6 @@
package org.jeecg.modules.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

View File

@ -1,7 +1,6 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import org.jeecg.modules.entity.GardsSampleCertLine;
import java.io.Serializable;
import java.util.List;

View File

@ -1,6 +1,5 @@
package org.jeecg.modules.entity.data;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;

View File

@ -1,7 +1,6 @@
package org.jeecg.modules.entity.data;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
import java.io.Serializable;
import java.util.List;

View File

@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsAnalyses;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;

View File

@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.base.entity.GardsMetData;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
public interface IGardsMetDataService extends IService<GardsMetData> {

View File

@ -6,7 +6,6 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.base.entity.GardsSohData;
import java.util.Date;
import java.util.List;
public interface IGardsSohDataService extends IService<GardsSohData> {

View File

@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsAnalyses;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;

View File

@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.GardsAnalyses;
import org.jeecg.modules.base.entity.GardsSampleData;
import org.jeecg.modules.mapper.GardsAnalysesMapper;
import org.jeecg.modules.service.IAutoService;
import org.jeecg.modules.service.IGardsSampleDataService;

View File

@ -2,7 +2,6 @@ package org.jeecg.modules.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.api.QueryRequest;
@ -11,13 +10,11 @@ import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.base.entity.GardsMetData;
import org.jeecg.modules.mapper.GardsMetDataMapper;
import org.jeecg.modules.service.IGardsMetDataService;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Service("gardsMetDataService")

View File

@ -11,8 +11,8 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.ReadLineUtil;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.entity.*;
import org.jeecg.modules.base.entity.GardsSampleData;
import org.jeecg.modules.entity.*;
import org.jeecg.modules.entity.data.*;
import org.jeecg.modules.mapper.*;
import org.jeecg.modules.service.IGardsSampleDataService;

View File

@ -2,10 +2,8 @@ package org.jeecg.modules.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.QueryRequest;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
@ -17,7 +15,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.*;
import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
@Service("gardsSohDataService")
@DS("ori")

View File

@ -2,7 +2,6 @@ package org.jeecg.modules.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
@ -16,7 +15,10 @@ import org.jeecg.modules.system.entity.GardsStations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service("sysDictService")

View File

@ -4,14 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.jeecg.config.valid.InsertGroup;
import org.jeecg.config.valid.UpdateGroup;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
@Data

View File

@ -7,8 +7,6 @@ import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
@Data