diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/MaximumPoolSizeProperties.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/MaximumPoolSizeProperties.java new file mode 100644 index 00000000..81b10e7b --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/MaximumPoolSizeProperties.java @@ -0,0 +1,14 @@ +package org.jeecg.common.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "maximum") +public class MaximumPoolSizeProperties { + + private Integer station; + +} diff --git a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/RedisStreamConfig.java b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/RedisStreamConfig.java index a559dbe6..51ae5e50 100644 --- a/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/RedisStreamConfig.java +++ b/jeecg-module-abnormal-alarm/src/main/java/org/jeecg/modules/redisStream/RedisStreamConfig.java @@ -4,8 +4,10 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.exception.StreamErrorHandler; +import org.jeecg.common.properties.MaximumPoolSizeProperties; import org.jeecg.common.util.RedisStreamUtil; import org.jeecg.modules.base.dto.Info; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; @@ -46,6 +48,9 @@ public class RedisStreamConfig { @Resource private RedisStreamUtil redisStreamUtil; + @Autowired + private MaximumPoolSizeProperties maximumPoolSizeProperties; + @Bean(initMethod = "start", destroyMethod = "stop") public StreamMessageListenerContainer> alarmStream() { /* 创建Stream和消费组 */ @@ -53,7 +58,7 @@ public class RedisStreamConfig { // 原子整数,多线程环境下对整数的原子性操作 AtomicInteger index = new AtomicInteger(1); // 返回当前系统可用的处理器数量 - Integer processors = Runtime.getRuntime().availableProcessors(); + Integer processors = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); /* corePoolSize:线程池中核心线程的数量,即线程池中保持的最小线程数 maximumPoolSize:线程池中允许的最大线程数 diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SpectrumAnalysisMapper.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SpectrumAnalysisMapper.java index 40f7c8dc..60d255a3 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SpectrumAnalysisMapper.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/SpectrumAnalysisMapper.java @@ -80,6 +80,8 @@ public interface SpectrumAnalysisMapper { List getHalf(@Param(value = "names") List names); + HalfData getOneHalf(@Param(value = "name") String name); + List UserNuclide(@Param(value = "systemType") String systemType, @Param(value = "userName") String userName); Integer getAnalysisID(@Param(value = "dbName") String dbName, @Param(value = "sampleId") Integer sampleId, @Param(value = "userName") String userName); @@ -175,4 +177,6 @@ public interface SpectrumAnalysisMapper { Integer getSampleIdLikeFileName(@Param(value = "fileName") String fileName); + List findNuclidesAnalysis(); + } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml index 56357066..081eae55 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/mapper/xml/SpectrumAnalysisMapper.xml @@ -589,6 +589,15 @@ + + @@ -1084,4 +1093,8 @@ select SAMPLE_ID from ORIGINAL.GARDS_SAMPLE_DATA WHERE INPUT_FILE_NAME LIKE CONCAT('%', #{fileName}) + + \ No newline at end of file diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsNuclIdedSpectrumService.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsNuclIdedSpectrumService.java index fe63c6ef..93aeb9cf 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsNuclIdedSpectrumService.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/IGardsNuclIdedSpectrumService.java @@ -9,4 +9,6 @@ public interface IGardsNuclIdedSpectrumService extends IService { int saveNuclIdedGamma(GStoreMiddleProcessData middleData, Integer sampleId, String idAnalysis); + void getNuclideMap(); + } diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java index 9060beb0..55a945d6 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GammaServiceImpl.java @@ -24,6 +24,7 @@ import org.jeecg.common.api.QueryRequest; import org.jeecg.common.api.vo.Result; import org.jeecg.common.cache.LocalCache; import org.jeecg.common.constant.DateConstant; +import org.jeecg.common.constant.RedisConstant; import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.properties.SpectrumPathProperties; import org.jeecg.common.system.util.JwtUtil; @@ -1280,7 +1281,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi phd.setEfficiencyEnergy(phd.getUsedEffiKD().getG_energy()); phd.setEfficiencyCurRow(0); // 重新计算峰值 - gammaFileUtil.getNuclideMDCValue(phd, phd.getMdcInfoMap(), nuclideLinesMap); + Map nuclideLinesMDCMap = (Map) redisUtil.get("AllNuclideMap"); + gammaFileUtil.getNuclideMDCValue(phd, phd.getMdcInfoMap(), nuclideLinesMDCMap); String warning = "Finish three tasks:\n" + "\t1.Update efficiencies of all peaks;\n" + "\t2.Identify nuclides again;\n" + @@ -1295,7 +1297,8 @@ public class GammaServiceImpl extends AbstractLogOrReport implements IGammaServi phd.setEfficiencyEnergy(phd.getUsedEffiKD().getG_energy()); phd.setEfficiencyCurRow(0); // 重新计算峰值 - gammaFileUtil.getNuclideMDCValue(phd, phd.getMdcInfoMap(), nuclideLinesMap); + Map nuclideLinesMDCMap = (Map) redisUtil.get("AllNuclideMap"); + gammaFileUtil.getNuclideMDCValue(phd, phd.getMdcInfoMap(), nuclideLinesMDCMap); Map map = new HashMap<>(); gammaFileUtil.UpdateChart(phd, map, colorMap); // 更新 ‘QC Flags’ 状态 diff --git a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedSpectrumServiceImpl.java b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedSpectrumServiceImpl.java index 439d9de3..f230d55e 100644 --- a/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedSpectrumServiceImpl.java +++ b/jeecg-module-spectrum-analysis/src/main/java/org/jeecg/modules/service/impl/GardsNuclIdedSpectrumServiceImpl.java @@ -2,21 +2,39 @@ package org.jeecg.modules.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.constant.RedisConstant; +import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.base.entity.rnman.GardsNuclIded; +import org.jeecg.modules.base.enums.SystemType; import org.jeecg.modules.entity.vo.GStoreMiddleProcessData; +import org.jeecg.modules.entity.vo.HalfData; +import org.jeecg.modules.entity.vo.NuclideLine; +import org.jeecg.modules.entity.vo.NuclideLines; import org.jeecg.modules.mapper.GardsNuclIdedSpectrumMapper; +import org.jeecg.modules.mapper.SpectrumAnalysisMapper; +import org.jeecg.modules.mapper.SysDefaultNuclideSpectrumMapper; import org.jeecg.modules.service.IGardsNuclIdedSpectrumService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.LinkedList; -import java.util.List; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.*; +import java.util.stream.Collectors; @Service("gardsNuclIdedSpectrumService") @DS("ora") public class GardsNuclIdedSpectrumServiceImpl extends ServiceImpl implements IGardsNuclIdedSpectrumService { + @Autowired + private SpectrumAnalysisMapper spectrumAnalysisMapper; + @Autowired + private RedisUtil redisUtil; @Override @Transactional @@ -54,4 +72,42 @@ public class GardsNuclIdedSpectrumServiceImpl extends ServiceImpl nuclideLibs = spectrumAnalysisMapper.findNuclidesAnalysis(); + Map nuclideMap = GetNuclideLines(nuclideLibs); + redisUtil.set("AllNuclideMap", nuclideMap); + } + + public Map GetNuclideLines(List nuclideList) { + Map mapLines = new HashMap<>(); + if (nuclideList.size() < 1) { + return mapLines; + } + for (String name : nuclideList) { + NuclideLines nlines = new NuclideLines(); + List nuclideLineList = spectrumAnalysisMapper.getNuclideLines(name); + for (int j = 0; j < nuclideLineList.size(); j++) { + nlines.getFullNames().add(nuclideLineList.get(j).getFullName()); + nlines.getVenergy().add(nuclideLineList.get(j).getEnergy()); + nlines.getVuncertE().add(nuclideLineList.get(j).getEnergyUncert()); + nlines.getVyield().add(nuclideLineList.get(j).getYield() / 100); + nlines.getVuncertY().add(nuclideLineList.get(j).getYieldUncert()); + if (Objects.nonNull(nuclideLineList.get(j).getKeyFlag()) && nuclideLineList.get(j).getKeyFlag().intValue() > 0) { + nlines.key_flag = j; + nlines.maxYeildIdx = j; + } + } + mapLines.put(name, nlines); + } + for (String name:nuclideList) { + HalfData half = spectrumAnalysisMapper.getOneHalf(name); + NuclideLines nuclideLines = mapLines.get(half.getName()); + nuclideLines.setHalflife(half.getHalf() == null ? 0 : half.getHalf() * 86400);// 将天转换成秒 + mapLines.put(half.getName(), nuclideLines); + } + return mapLines; + } + + } diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/DataProvisionEfficiencyManager.java b/jeecg-module-station-operation/src/main/java/org/jeecg/DataProvisionEfficiencyManager.java index 1a4bb92f..3af394fb 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/DataProvisionEfficiencyManager.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/DataProvisionEfficiencyManager.java @@ -3,6 +3,7 @@ package org.jeecg; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.CalculateStationData; +import org.jeecg.common.properties.MaximumPoolSizeProperties; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.base.entity.configuration.GardsStations; import org.jeecg.modules.entity.data.RateParam; @@ -26,6 +27,8 @@ public class DataProvisionEfficiencyManager { private final CalculateStationData calCulateStationData; + private final MaximumPoolSizeProperties maximumPoolSizeProperties; + /** * 开始 */ @@ -44,7 +47,7 @@ public class DataProvisionEfficiencyManager { public void init(){ //获取机器可用核心数 - int systemCores = Runtime.getRuntime().availableProcessors(); + int systemCores = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); //初始化线程池 ThreadFactory threadFactory = new CustomizableThreadFactory("provision-efficiency-"); poolExecutor = new ThreadPoolExecutor(systemCores-1,systemCores,5, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),threadFactory); diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/DataReceivingStatusManager.java b/jeecg-module-station-operation/src/main/java/org/jeecg/DataReceivingStatusManager.java index 74d684b7..50760a4a 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/DataReceivingStatusManager.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/DataReceivingStatusManager.java @@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.CacheName; import org.jeecg.common.config.mqtoken.UserTokenContext; +import org.jeecg.common.properties.MaximumPoolSizeProperties; import org.jeecg.common.util.DateUtils; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.base.entity.original.GardsMetData; @@ -47,6 +48,8 @@ public class DataReceivingStatusManager { private final StationSohDataMapper stationSohDataMapper; + private final MaximumPoolSizeProperties maximumPoolSizeProperties; + public void start() { ReceivingStatusThreadManager receivingStatusManager = new ReceivingStatusThreadManager(); receivingStatusManager.init(); @@ -62,7 +65,7 @@ public class DataReceivingStatusManager { public void init(){ //获取机器可用核心数 - int systemCores = Runtime.getRuntime().availableProcessors(); + int systemCores = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); //初始化线程池 ThreadFactory threadFactory = new CustomizableThreadFactory("undeal-file-parsing-"); poolExecutor = new ThreadPoolExecutor(systemCores-1,systemCores,5, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),threadFactory); diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateStationData.java b/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateStationData.java index 42561b89..4ed0a2d3 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateStationData.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateStationData.java @@ -1,6 +1,7 @@ package org.jeecg.common; import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.properties.MaximumPoolSizeProperties; import org.jeecg.common.properties.ParameterProperties; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.entity.data.*; @@ -25,6 +26,8 @@ public class CalculateStationData { @Autowired private ParameterProperties parameterProperties; @Autowired + private MaximumPoolSizeProperties maximumPoolSizeProperties; + @Autowired private RedisUtil redisUtil; /** @@ -837,7 +840,7 @@ public class CalculateStationData { // 如果线程数不等于0 if (threadNum != 0){ //获取机器可用核心数 - int maximumPoolSize = Runtime.getRuntime().availableProcessors(); + int maximumPoolSize = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); //初始化线程池 ThreadFactory threadFactory = new ThreadFactory() { @Override diff --git a/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataWebServiceImpl.java b/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataWebServiceImpl.java index e263f0f7..30a22aa7 100644 --- a/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataWebServiceImpl.java +++ b/jeecg-module-web-statistics/src/main/java/org/jeecg/modules/service/impl/GardsSampleDataWebServiceImpl.java @@ -147,6 +147,7 @@ public class GardsSampleDataWebServiceImpl extends ServiceImplarmd-abnormal-alarm-start + + + org.jeecgframework.boot + jeecg-boot-starter-cloud + + + + org.jeecgframework.boot + jeecg-boot-base-core + + org.jeecgframework.boot @@ -34,26 +45,6 @@ org.springframework.boot spring-boot-maven-plugin - - - true - - diff --git a/jeecg-server-cloud/armd-abnormal-alarm-start/src/main/resources/application.yml b/jeecg-server-cloud/armd-abnormal-alarm-start/src/main/resources/application.yml index 4beb3b36..2b72a783 100644 --- a/jeecg-server-cloud/armd-abnormal-alarm-start/src/main/resources/application.yml +++ b/jeecg-server-cloud/armd-abnormal-alarm-start/src/main/resources/application.yml @@ -16,4 +16,5 @@ spring: import: - optional:nacos:armd.yaml - optional:nacos:IDC-Data.yaml - - optional:nacos:armd-@profile.name@.yaml \ No newline at end of file + - optional:nacos:armd-@profile.name@.yaml + - optional:nacos:armd-analysis-@profile.name@.yaml \ No newline at end of file diff --git a/jeecg-server-cloud/armd-spectrum-analysis-start/src/main/java/org/jeecg/JeecgSpectrumAnalysisApplication.java b/jeecg-server-cloud/armd-spectrum-analysis-start/src/main/java/org/jeecg/JeecgSpectrumAnalysisApplication.java index fbcafbc6..09def5e3 100644 --- a/jeecg-server-cloud/armd-spectrum-analysis-start/src/main/java/org/jeecg/JeecgSpectrumAnalysisApplication.java +++ b/jeecg-server-cloud/armd-spectrum-analysis-start/src/main/java/org/jeecg/JeecgSpectrumAnalysisApplication.java @@ -7,6 +7,7 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.service.IDataService; import org.jeecg.modules.service.IGammaService; import org.jeecg.modules.service.IGardsNuclCoincidenceSumSpectrumService; +import org.jeecg.modules.service.IGardsNuclIdedSpectrumService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; @@ -35,6 +36,8 @@ public class JeecgSpectrumAnalysisApplication extends SpringBootServletInitializ @Autowired private IGardsNuclCoincidenceSumSpectrumService nuclCoincidenceSumSpectrumService; @Autowired + private IGardsNuclIdedSpectrumService nuclIdedSpectrumService; + @Autowired private IDataService dataService; @@ -59,13 +62,17 @@ public class JeecgSpectrumAnalysisApplication extends SpringBootServletInitializ @Override public void run(String... args) throws Exception { - //加载dll工具库 + //Windows加载dll工具库 System.loadLibrary("ReadPHDFile"); System.loadLibrary("GammaAnaly"); + //Linux版本加载dll工具库 +// System.load("/usr/local/jdk/lib/libReadPHDFile.so"); +// System.load("/usr/local/jdk/lib/libGammaAnalyALG.so"); //创建缓存 betaCache.initCache(); localCache.initCache(); gammaService.readMDCParameter(); + nuclIdedSpectrumService.getNuclideMap(); nuclCoincidenceSumSpectrumService.getNuclCoincidenceMap(); dataService.viewStations(); }