diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/configuration/GardsStations.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/configuration/GardsStations.java index 1787c66a..ba3f18fc 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/configuration/GardsStations.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/configuration/GardsStations.java @@ -19,57 +19,57 @@ import java.util.Date; public class GardsStations implements Serializable { /** - * 台站id + * 台站id */ @TableId("STATION_ID") @NotNull(message = "不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private Integer stationId; /** - * 台站编码 + * 台站编码 */ @TableField(value = "STATION_CODE") @NotBlank(message = "不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private String stationCode; /** - * 城市编码 + * 城市编码 */ @TableField(value = "COUNTRY_CODE") private String countryCode; /** - * 台站类型 + * 台站类型 */ @TableField(value = "TYPE") private String type; /** - * 经度 + * 经度 */ @TableField(value = "LON") private Double lon; /** - * 纬度 + * 纬度 */ @TableField(value = "LAT") private Double lat; /** - * 海拔 + * 海拔 */ @TableField(value = "ELEVATION") private Double elevation; /** - * 描述 + * 描述 */ @TableField(value = "DESCRIPTION") private String description; /** - * 开始运行日期 + * 开始运行日期 */ @TableField(value = "DATE_BEGIN") @DateTimeFormat(pattern = "yyyy-MM-dd") @@ -85,13 +85,13 @@ public class GardsStations implements Serializable { private Date dateEnd; /** - * 运行状态 + * 运行状态 */ @TableField(value = "STATUS") private String status; /** - * 操作时间 + * 操作时间 */ @TableField(value = "MODDATE") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @@ -100,5 +100,9 @@ public class GardsStations implements Serializable { @TableField(value = "CATEGORY") private Integer category; - + /** + * 有效率计算类型 + */ + @TableField(value = "EFFIC_CALCUL_TYPE") + private String efficCalculType; } 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 a41d4788..72771aa7 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 @@ -74,6 +74,7 @@ public class DataProvisionEfficiencyManager { stationInfo.setType(gardsStations.getType()); stationInfo.setDescription(gardsStations.getDescription()); stationInfo.setStatus(gardsStations.getStatus()); + stationInfo.setEfficCalculType(gardsStations.getEfficCalculType()); boolean contains = detectorsUsedList.contains(gardsStations.getStationId()); if (contains) { stationInfo.setUsed("YES"); diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateDataRateThread.java b/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateDataRateThread.java index af396cb8..db51229a 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateDataRateThread.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/common/CalculateDataRateThread.java @@ -16,7 +16,7 @@ import java.util.Objects; import java.util.concurrent.CountDownLatch; @Slf4j -public class CalculateDataRateThread implements Runnable{ +public class CalculateDataRateThread implements Runnable { private ICalCulStationDataService calCulStationDataService = ApplicationContextUtil.getContext().getBean(ICalCulStationDataService.class); @@ -36,7 +36,7 @@ public class CalculateDataRateThread implements Runnable{ public void run() { try { this.calCulStationInfo(); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } finally { // CountDownLatch 计数器减 1 @@ -45,11 +45,11 @@ public class CalculateDataRateThread implements Runnable{ } /** - * 计算台站信息 + * 计算台站信息 */ - public void calCulStationInfo(){ + public void calCulStationInfo() { //判断当前台站及数据相关信息是否为空 - if(Objects.isNull(stationinfoAndDataRate)) { + if (Objects.isNull(stationinfoAndDataRate)) { return; } //获取台站信息 @@ -68,16 +68,17 @@ public class CalculateDataRateThread implements Runnable{ calculateDataRate.setMStationId(stationInfo.getId()); calculateDataRate.setMStationCode(stationInfo.getStationCode()); calculateDataRate.setMStationType(stationInfo.getType()); + calculateDataRate.setMEfficCalculType(stationInfo.getEfficCalculType()); //计算台站数据 Rate calculate = this.calculate(calculateDataRate); - stationInfo.setPhdf(calculate.getPhdfOffered()+"/"+calculate.getPhdfEfficient()); - stationInfo.setPhd(calculate.getPhdOffered()+"/"+calculate.getPhdEfficient()); + stationInfo.setPhdf(calculate.getPhdfOffered() + "/" + calculate.getPhdfEfficient()); + stationInfo.setPhd(calculate.getPhdOffered() + "/" + calculate.getPhdEfficient()); stationInfo.setMet(String.valueOf(calculate.getMet())); stationInfo.setSoh(String.valueOf(calculate.getSoh())); stationInfo.setPhdMetSoh(String.valueOf(calculate.getPhdMetSoh())); - if(calculate.getPhdfEfficient() >= mRateparam.getParameter().getExcellent()) { + if (calculate.getPhdfEfficient() >= mRateparam.getParameter().getExcellent()) { stationInfo.setQuality("excellent"); - } else if(calculate.getPhdfEfficient() >= mRateparam.getParameter().getGood()) { + } else if (calculate.getPhdfEfficient() >= mRateparam.getParameter().getGood()) { stationInfo.setQuality("good"); } else { stationInfo.setQuality("bad"); @@ -92,7 +93,7 @@ public class CalculateDataRateThread implements Runnable{ * 根据台站编码及台站类型选择不同的方法 * @param calculateDataRate */ - public Rate calculate(CalculateDataRate calculateDataRate){ + public Rate calculate(CalculateDataRate calculateDataRate) { Rate mRate = new Rate(); if (StringUtils.isBlank(calculateDataRate.getMStationId())) { log.error("台站id不能为空"); @@ -101,21 +102,30 @@ public class CalculateDataRateThread implements Runnable{ String stationCode = calculateDataRate.getMStationCode(); //获取台站类型 String stationType = calculateDataRate.getMStationType(); + //修改使用efficCalculType判断台站类型 + String efficCalculType = calculateDataRate.getMEfficCalculType(); //判断台站编码及台站类型 - if((StringUtils.isNotBlank(stationCode) && stationCode.substring(2,3).equals("X")) && (StringUtils.isNotBlank(stationType) && stationType.equals("SAUNA")) ) { - //切割台站编码 如果 第三个字符是 X 并且 台站类型是 SAUNA + if ((StringUtils.isNotBlank(stationCode) && stationCode.charAt(2) == 'X') && (StringUtils.isNotBlank(efficCalculType) && efficCalculType.equals("SAUNA"))) { + //切割台站编码 如果 第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 SAUNA mRate = saunacalc(calculateDataRate); - } else if((StringUtils.isNotBlank(stationCode) && stationCode.substring(2,3).equals("X")) && (StringUtils.isNotBlank(stationType) && stationType.equals("SPALAX")) ) { - //切割台站编码 如果 第三个字符是 X 并且 台站类型是 SPALAX + } else if ((StringUtils.isNotBlank(stationCode) && stationCode.charAt(2) == 'X') && (StringUtils.isNotBlank(efficCalculType) && efficCalculType.equals("SAUNA2"))) { + //切割台站编码 如果 第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 SAUNA2 + mRate = saunacalc2(calculateDataRate); + } else if ((StringUtils.isNotBlank(stationCode) && stationCode.charAt(2) == 'X') && (StringUtils.isNotBlank(efficCalculType) && efficCalculType.equals("SPALAX"))) { + //切割台站编码 如果 第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 SPALAX mRate = spalaxcalc(calculateDataRate); - } else if(StringUtils.isNotBlank(stationCode) && stationCode.substring(2,3).equals("P")) { + } else if ((StringUtils.isNotBlank(stationCode) && stationCode.charAt(2) == 'X') && (StringUtils.isNotBlank(efficCalculType) && efficCalculType.equals("SPALAX_PLC"))) { + //切割台站编码 如果 第三个字符是 X 并且 EFFIC_CALCUL_TYPE类型是 SPALAX-PLC + mRate = spalaxcalcPLC(calculateDataRate); + } else if (StringUtils.isNotBlank(stationCode) && stationCode.charAt(2) == 'P') { //切割台站编码 如果 第三个字符是 P mRate = particulatecalc(calculateDataRate); } return mRate; } - public Rate saunacalc(CalculateDataRate calculateDataRate){ + + public Rate saunacalc(CalculateDataRate calculateDataRate) { Rate mRate = new Rate(); //获取特殊台站相关集合 Map mSpecialparam = calculateDataRate.getMSpecialparam(); @@ -136,11 +146,11 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String number = param.getPhdf().getNumber(); phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSauna(curDateTime, pretime, number, stationId); - }else { + } else { String number = calculateDataRate.getMParameter().getPhdfSauna().getNumber(); phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSauna(curDateTime, pretime, number, stationId); } - if (Objects.nonNull(phdfProvisionRate)){ + if (Objects.nonNull(phdfProvisionRate)) { Double phdf_offered = phdfProvisionRate.getDataRate(); mRate.setPhdfOffered(phdf_offered); } @@ -159,7 +169,7 @@ public class CalculateDataRateThread implements Runnable{ 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 { + } else { String liveLow = calculateDataRate.getMParameter().getPhdfSauna().getLiveLow(); String liveHigh = calculateDataRate.getMParameter().getPhdfSauna().getLiveHigh(); String quantity = calculateDataRate.getMParameter().getPhdfSauna().getQuantity(); @@ -170,9 +180,9 @@ public class CalculateDataRateThread implements Runnable{ 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); + phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencySauna(liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, curDateTime, pretime, number, stationId); } - if (Objects.nonNull(phdfProvisionEfficiency)){ + if (Objects.nonNull(phdfProvisionEfficiency)) { Double phdf_efficient = phdfProvisionEfficiency.getDataEfficiency(); mRate.setPhdfEfficient(phdf_efficient); } @@ -182,11 +192,11 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String number = param.getPhd().getNumber(); phdProvisionRate = calCulStationDataService.findPhdProvisionRateSauna(curDateTime, pretime, number, stationId); - }else { + } else { String number = calculateDataRate.getMParameter().getPhdSauna().getNumber(); phdProvisionRate = calCulStationDataService.findPhdProvisionRateSauna(curDateTime, pretime, number, stationId); } - if (Objects.nonNull(phdProvisionRate)){ + if (Objects.nonNull(phdProvisionRate)) { Double phd_offered = phdProvisionRate.getDataRate(); mRate.setPhdOffered(phd_offered); } @@ -205,7 +215,7 @@ public class CalculateDataRateThread implements Runnable{ 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 { + } else { String liveLow = calculateDataRate.getMParameter().getPhdSauna().getLiveLow(); String liveHigh = calculateDataRate.getMParameter().getPhdSauna().getLiveHigh(); String quantity = calculateDataRate.getMParameter().getPhdSauna().getQuantity(); @@ -216,9 +226,9 @@ public class CalculateDataRateThread implements Runnable{ 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); + phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySauna(liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, curDateTime, pretime, number, stationId); } - if (Objects.nonNull(phdProvisionEfficiency)){ + if (Objects.nonNull(phdProvisionEfficiency)) { Double phd_efficient = phdProvisionEfficiency.getDataEfficiency(); mRate.setPhdEfficient(phd_efficient); } @@ -228,11 +238,11 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String met = param.getMet(); metProvision = calCulStationDataService.findMetProvisionSauna(curDateTime, pretime, met, stationId); - }else { + } else { String met = calculateDataRate.getMParameter().getMet(); metProvision = calCulStationDataService.findMetProvisionSauna(curDateTime, pretime, met, stationId); } - if (Objects.nonNull(metProvision)){ + if (Objects.nonNull(metProvision)) { Double met = metProvision.getDataRate(); mRate.setMet(met); } @@ -242,11 +252,11 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String soh = param.getSoh(); sohProvision = calCulStationDataService.findSohProvisionSauna(curDateTime, pretime, soh, stationId); - }else { + } else { String soh = calculateDataRate.getMParameter().getSoh(); sohProvision = calCulStationDataService.findSohProvisionSauna(curDateTime, pretime, soh, stationId); } - if (Objects.nonNull(sohProvision)){ + if (Objects.nonNull(sohProvision)) { Double soh = sohProvision.getDataRate(); mRate.setSoh(soh); } @@ -255,7 +265,7 @@ public class CalculateDataRateThread implements Runnable{ ProvisionData sphdProvision = calCulStationDataService.findSphdProvisionSauna(curDateTime, pretime, stationId); String SPHD_NUM = "0"; if (Objects.nonNull(sphdProvision)) { - SPHD_NUM = sphdProvision.getDataNumber().toString(); + SPHD_NUM = sphdProvision.getDataNumber().toString(); } //获取SPHD+MET+SOH数据提供率 MET部分 ProvisionData sphdMetProvision = calCulStationDataService.findSphdMetProvisionSauna(curDateTime, pretime, stationId); @@ -268,18 +278,173 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String sphdMetSoh = param.getSphdMetSoh(); sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionSauna(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId); - }else { + } else { String sphdMetSoh = calculateDataRate.getMParameter().getSphdMetSoh().getSaunaEverydaynums(); sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionSauna(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId); } - if (Objects.nonNull(sphdMetSohProvision)){ + if (Objects.nonNull(sphdMetSohProvision)) { Double phd_met_soh = sphdMetSohProvision.getDataRate(); mRate.setPhdMetSoh(phd_met_soh); } return mRate; } - public Rate spalaxcalc(CalculateDataRate calculateDataRate){ + private Rate saunacalc2(CalculateDataRate calculateDataRate) { + Rate mRate = new Rate(); + //region 局部变量 + //获取特殊台站相关集合 + Map 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) dayspan).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + //获取台站id + String stationId = calculateDataRate.getMStationId(); + String liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, number; + //endregion + //判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率 + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + number = param.getPhdf().getNumber(); + } else { + number = calculateDataRate.getMParameter().getPhdfSauna2().getNumber(); + } + ProvisionData phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSauna2(curDateTime, pretime, number, stationId); + if (Objects.nonNull(phdfProvisionRate)) { + double phdf_offered = phdfProvisionRate.getDataRate(); + mRate.setPhdfOffered(phdf_offered); + } + //判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率 + ProvisionData phdfProvisionEfficiency; + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + liveLow = param.getPhdf().getLiveLow(); + liveHigh = param.getPhdf().getLiveHigh(); + quantity = param.getPhdf().getQuantity(); + mdc = param.getPhdf().getMdc(); + collectLow = param.getPhdf().getCollectLow(); + collectHigh = param.getPhdf().getCollectHigh(); + xeVolume = param.getPhdf().getXeVolume(); + nuclideName = param.getPhdf().getNuclideName(); + liveQc = param.getPhdf().getLiveQc(); + number = param.getPhdf().getNumber(); + } + else { + liveLow = calculateDataRate.getMParameter().getPhdfSauna2().getLiveLow(); + liveHigh = calculateDataRate.getMParameter().getPhdfSauna2().getLiveHigh(); + quantity = calculateDataRate.getMParameter().getPhdfSauna2().getQuantity(); + mdc = calculateDataRate.getMParameter().getPhdfSauna2().getMdc(); + collectLow = calculateDataRate.getMParameter().getPhdfSauna2().getCollectLow(); + collectHigh = calculateDataRate.getMParameter().getPhdfSauna2().getCollectHigh(); + xeVolume = calculateDataRate.getMParameter().getPhdfSauna2().getXeVolume(); + nuclideName = calculateDataRate.getMParameter().getPhdfSauna2().getNuclideName(); + liveQc = calculateDataRate.getMParameter().getPhdfSauna2().getLiveQc(); + number = calculateDataRate.getMParameter().getPhdfSauna2().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的数据提供率 + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + number = param.getPhd().getNumber(); + } else { + number = calculateDataRate.getMParameter().getPhdSauna2().getNumber(); + } + ProvisionData phdProvisionRate = calCulStationDataService.findPhdProvisionRateSauna2(curDateTime, pretime, number, stationId); + if (Objects.nonNull(phdProvisionRate)) { + double phd_offered = phdProvisionRate.getDataRate(); + mRate.setPhdOffered(phd_offered); + } + + //判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率 + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + liveLow = param.getPhd().getLiveLow(); + liveHigh = param.getPhd().getLiveHigh(); + quantity = param.getPhd().getQuantity(); + mdc = param.getPhd().getMdc(); + collectLow = param.getPhd().getCollectLow(); + collectHigh = param.getPhd().getCollectHigh(); + xeVolume = param.getPhd().getXeVolume(); + nuclideName = param.getPhd().getNuclideName(); + liveQc = param.getPhd().getLiveQc(); + number = param.getPhd().getNumber(); + } else { + liveLow = calculateDataRate.getMParameter().getPhdSauna2().getLiveLow(); + liveHigh = calculateDataRate.getMParameter().getPhdSauna2().getLiveHigh(); + quantity = calculateDataRate.getMParameter().getPhdSauna2().getQuantity(); + mdc = calculateDataRate.getMParameter().getPhdSauna2().getMdc(); + collectLow = calculateDataRate.getMParameter().getPhdSauna2().getCollectLow(); + collectHigh = calculateDataRate.getMParameter().getPhdSauna2().getCollectHigh(); + xeVolume = calculateDataRate.getMParameter().getPhdSauna2().getXeVolume(); + nuclideName = calculateDataRate.getMParameter().getPhdSauna2().getNuclideName(); + liveQc = calculateDataRate.getMParameter().getPhdSauna2().getLiveQc(); + number = calculateDataRate.getMParameter().getPhdSauna2().getNumber(); + } + ProvisionData phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySauna2(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的数据提供率 + String met; + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + met = param.getMet(); + } else { + met = calculateDataRate.getMParameter().getMet(); + } + ProvisionData metProvision = calCulStationDataService.findMetProvisionSauna(curDateTime, pretime, met, stationId); + if (Objects.nonNull(metProvision)) { + double metNum = metProvision.getDataRate(); + mRate.setMet(metNum); + } + //判断当前台站编码是否属于特殊计算的台站 计算SOH的数据提供率 + String soh; + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + soh = param.getSoh(); + } else { + soh = calculateDataRate.getMParameter().getSoh(); + } + ProvisionData sohProvision = calCulStationDataService.findSohProvisionSauna(curDateTime, pretime, soh, stationId); + if (Objects.nonNull(sohProvision)) { + double sohNum = sohProvision.getDataRate(); + mRate.setSoh(sohNum); + } + //计算SPHD+MET+SOH数据提供率 SPHD部分 + ProvisionData sphdProvision = calCulStationDataService.findSphdProvisionSauna2(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的数据提供率 + String sphdMetSoh; + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + sphdMetSoh = param.getSphdMetSoh(); + } else { + sphdMetSoh = calculateDataRate.getMParameter().getSphdMetSoh().getSaunaEverydaynums(); + } + ProvisionData 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 mSpecialparam = calculateDataRate.getMSpecialparam(); @@ -300,7 +465,7 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String number = param.getPhdf().getNumber(); phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSpalax(curDateTime, pretime, number, stationId); - }else { + } else { String number = calculateDataRate.getMParameter().getPhdfSpalax().getNumber(); phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSpalax(curDateTime, pretime, number, stationId); } @@ -320,7 +485,7 @@ public class CalculateDataRateThread implements Runnable{ String liveQc = param.getPhdf().getLiveQc(); String number = param.getPhdf().getNumber(); phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId); - }else { + } else { String liveLow = calculateDataRate.getMParameter().getPhdfSpalax().getLiveLow(); String liveHigh = calculateDataRate.getMParameter().getPhdfSpalax().getLiveHigh(); String quantity = calculateDataRate.getMParameter().getPhdfSpalax().getQuantity(); @@ -328,7 +493,7 @@ public class CalculateDataRateThread implements Runnable{ 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); + phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId); } if (Objects.nonNull(phdfProvisionEfficiency)) { Double phdf_efficient = phdfProvisionEfficiency.getDataEfficiency(); @@ -340,7 +505,7 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String number = param.getPhd().getNumber(); phdProvisionRate = calCulStationDataService.findPhdProvisionRateSpalax(curDateTime, pretime, number, stationId); - }else { + } else { String number = calculateDataRate.getMParameter().getPhdSpalax().getNumber(); phdProvisionRate = calCulStationDataService.findPhdProvisionRateSpalax(curDateTime, pretime, number, stationId); } @@ -360,7 +525,7 @@ public class CalculateDataRateThread implements Runnable{ String liveQc = param.getPhd().getLiveQc(); String number = param.getPhd().getNumber(); phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId); - }else { + } else { String liveLow = calculateDataRate.getMParameter().getPhdSpalax().getLiveLow(); String liveHigh = calculateDataRate.getMParameter().getPhdSpalax().getLiveHigh(); String quantity = calculateDataRate.getMParameter().getPhdSpalax().getQuantity(); @@ -368,7 +533,7 @@ public class CalculateDataRateThread implements Runnable{ 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); + phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySpalax(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId); } if (Objects.nonNull(phdProvisionEfficiency)) { Double phd_efficient = phdProvisionEfficiency.getDataEfficiency(); @@ -380,7 +545,7 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String met = param.getMet(); metProvision = calCulStationDataService.findMetProvisionSpalax(curDateTime, pretime, met, stationId); - }else { + } else { String met = calculateDataRate.getMParameter().getMet(); metProvision = calCulStationDataService.findMetProvisionSpalax(curDateTime, pretime, met, stationId); } @@ -394,7 +559,7 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String soh = param.getSoh(); sohProvision = calCulStationDataService.findSohProvisionSpalax(curDateTime, pretime, soh, stationId); - }else { + } else { String soh = calculateDataRate.getMParameter().getSoh(); sohProvision = calCulStationDataService.findSohProvisionSpalax(curDateTime, pretime, soh, stationId); } @@ -413,7 +578,7 @@ public class CalculateDataRateThread implements Runnable{ //获取SPHD+MET+SOH数据提供率 MET部分 ProvisionData sphdMetProvision = calCulStationDataService.findSphdMetProvisionSpalax(curDateTime, pretime, stationId); String MET_NUM = "0"; - if (Objects.nonNull(sphdMetProvision)){ + if (Objects.nonNull(sphdMetProvision)) { MET_NUM = sphdMetProvision.getDataNumber().toString(); } @@ -422,18 +587,166 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String sphdMetSoh = param.getSphdMetSoh(); sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionSpalax(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId); - }else { + } else { String sphdMetSoh = calculateDataRate.getMParameter().getSphdMetSoh().getSpalaxEverydaynums(); sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionSpalax(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId); } - if (Objects.nonNull(sphdMetSohProvision)){ + if (Objects.nonNull(sphdMetSohProvision)) { Double phd_met_soh = sphdMetSohProvision.getDataRate(); mRate.setPhdMetSoh(phd_met_soh); } return mRate; } - public Rate particulatecalc(CalculateDataRate calculateDataRate){ + public Rate spalaxcalcPLC(CalculateDataRate calculateDataRate) { + Rate mRate = new Rate(); + //region 局部变量 + //获取特殊台站相关集合 + Map 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) dayspan).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + //获取台站id + String stationId = calculateDataRate.getMStationId(); + + String liveLow, liveHigh, quantity, mdc, collectLow, collectHigh, xeVolume, nuclideName, liveQc, number; + //endregion + //判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率 + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + number = param.getPhdf().getNumber(); + } else { + number = calculateDataRate.getMParameter().getPhdfSpalaxPLC().getNumber(); + } + ProvisionData phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateSpalax(curDateTime, pretime, number, stationId); + if (Objects.nonNull(phdfProvisionRate)) { + double phdf_offered = phdfProvisionRate.getDataRate(); + mRate.setPhdfOffered(phdf_offered); + } + + //判断当前台站编码是否属于特殊计算的台站 计算PHDF的数据提供率 + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + liveLow = param.getPhdf().getLiveLow(); + liveHigh = param.getPhdf().getLiveHigh(); + quantity = param.getPhdf().getQuantity(); + collectLow = param.getPhdf().getCollectLow(); + collectHigh = param.getPhdf().getCollectHigh(); + liveQc = param.getPhdf().getLiveQc(); + number = param.getPhdf().getNumber(); + } + else { + liveLow = calculateDataRate.getMParameter().getPhdfSpalaxPLC().getLiveLow(); + liveHigh = calculateDataRate.getMParameter().getPhdfSpalaxPLC().getLiveHigh(); + quantity = calculateDataRate.getMParameter().getPhdfSpalaxPLC().getQuantity(); + collectLow = calculateDataRate.getMParameter().getPhdfSpalaxPLC().getCollectLow(); + collectHigh = calculateDataRate.getMParameter().getPhdfSpalaxPLC().getCollectHigh(); + liveQc = calculateDataRate.getMParameter().getPhdfSpalaxPLC().getLiveQc(); + number = calculateDataRate.getMParameter().getPhdfSpalaxPLC().getNumber(); + } + ProvisionData phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencySpalaxPLC(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId); + if (Objects.nonNull(phdfProvisionEfficiency)) { + double phdf_efficient = phdfProvisionEfficiency.getDataEfficiency(); + mRate.setPhdfEfficient(phdf_efficient); + } + + //判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率 + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + number = param.getPhd().getNumber(); + } else { + number = calculateDataRate.getMParameter().getPhdSpalaxPLC().getNumber(); + } + ProvisionData phdProvisionRate = calCulStationDataService.findPhdProvisionRateSpalaxPLC(curDateTime, pretime, number, stationId); + if (Objects.nonNull(phdProvisionRate)) { + double phd_offered = phdProvisionRate.getDataRate(); + mRate.setPhdOffered(phd_offered); + } + + //判断当前台站编码是否属于特殊计算的台站 计算PHD的数据提供率 + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + liveLow = param.getPhd().getLiveLow(); + liveHigh = param.getPhd().getLiveHigh(); + quantity = param.getPhd().getQuantity(); + collectLow = param.getPhd().getCollectLow(); + collectHigh = param.getPhd().getCollectHigh(); + liveQc = param.getPhd().getLiveQc(); + number = param.getPhd().getNumber(); + } + else { + liveLow = calculateDataRate.getMParameter().getPhdSpalaxPLC().getLiveLow(); + liveHigh = calculateDataRate.getMParameter().getPhdSpalaxPLC().getLiveHigh(); + quantity = calculateDataRate.getMParameter().getPhdSpalaxPLC().getQuantity(); + collectLow = calculateDataRate.getMParameter().getPhdSpalaxPLC().getCollectLow(); + collectHigh = calculateDataRate.getMParameter().getPhdSpalaxPLC().getCollectHigh(); + liveQc = calculateDataRate.getMParameter().getPhdSpalaxPLC().getLiveQc(); + number = calculateDataRate.getMParameter().getPhdSpalaxPLC().getNumber(); + } + ProvisionData phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencySpalaxPLC(liveLow, liveHigh, quantity, collectLow, collectHigh, liveQc, curDateTime, pretime, number, stationId); + if (Objects.nonNull(phdProvisionEfficiency)) { + double phd_efficient = phdProvisionEfficiency.getDataEfficiency(); + mRate.setPhdEfficient(phd_efficient); + } + + //判断当前台站编码是否属于特殊计算的台站 计算MET的数据提供率 + String met; + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + met = param.getMet(); + } else { + met = calculateDataRate.getMParameter().getMet(); + } + ProvisionData metProvision = calCulStationDataService.findMetProvisionSpalax(curDateTime, pretime, met, stationId); + if (Objects.nonNull(metProvision)) { + double metNum = metProvision.getDataRate(); + mRate.setMet(metNum); + } + + //判断当前台站编码是否属于特殊计算的台站 计算SOH的数据提供率 + String soh; + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + soh = param.getSoh(); + } else { + soh = calculateDataRate.getMParameter().getSoh(); + } + ProvisionData sohProvision = calCulStationDataService.findSohProvisionSpalax(curDateTime, pretime, soh, stationId); + if (Objects.nonNull(sohProvision)) { + double sohNum = sohProvision.getDataRate(); + mRate.setSoh(sohNum); + } + //计算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的数据提供率 + String sphdMetSoh; + if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { + sphdMetSoh = param.getSphdMetSoh(); + } else { + sphdMetSoh = calculateDataRate.getMParameter().getSphdMetSoh().getSpalaxEverydaynums(); + } + ProvisionData 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 mSpecialparam = calculateDataRate.getMSpecialparam(); @@ -454,7 +767,7 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String number = param.getPhdf().getNumber(); phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateParticulate(curDateTime, pretime, number, stationId); - }else { + } else { String number = calculateDataRate.getMParameter().getPhdfParticulate().getNumber(); phdfProvisionRate = calCulStationDataService.findPhdfProvisionRateParticulate(curDateTime, pretime, number, stationId); } @@ -473,14 +786,14 @@ public class CalculateDataRateThread implements Runnable{ String collectHigh = param.getPhdf().getCollectHigh(); String number = param.getPhdf().getNumber(); phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number, stationId); - }else { + } 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); + phdfProvisionEfficiency = calCulStationDataService.findPhdfProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number, stationId); } if (Objects.nonNull(phdfProvisionEfficiency)) { Double phdf_efficient = phdfProvisionEfficiency.getDataEfficiency(); @@ -492,11 +805,11 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String number = param.getPhd().getNumber(); phdProvisionRate = calCulStationDataService.findPhdProvisionRateParticulate(curDateTime, pretime, number, stationId); - }else { + } else { String number = calculateDataRate.getMParameter().getPhdParticulate().getNumber(); phdProvisionRate = calCulStationDataService.findPhdProvisionRateParticulate(curDateTime, pretime, number, stationId); } - if (Objects.nonNull(phdProvisionRate)){ + if (Objects.nonNull(phdProvisionRate)) { Double phd_offered = phdProvisionRate.getDataRate(); mRate.setPhdOffered(phd_offered); } @@ -511,14 +824,14 @@ public class CalculateDataRateThread implements Runnable{ String collectHigh = param.getPhd().getCollectHigh(); String number = param.getPhd().getNumber(); phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number, stationId); - }else { + } 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); + phdProvisionEfficiency = calCulStationDataService.findPhdProvisionEfficiencyParticulate(liveLow, liveHigh, quantity, collectLow, collectHigh, curDateTime, pretime, number, stationId); } if (Objects.nonNull(phdProvisionEfficiency)) { Double phd_efficient = phdProvisionEfficiency.getDataEfficiency(); @@ -530,7 +843,7 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String met = param.getMet(); metProvision = calCulStationDataService.findMetProvisionParticulate(curDateTime, pretime, met, stationId); - }else { + } else { String met = calculateDataRate.getMParameter().getMet(); metProvision = calCulStationDataService.findMetProvisionParticulate(curDateTime, pretime, met, stationId); } @@ -544,7 +857,7 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String soh = param.getSoh(); sohProvision = calCulStationDataService.findSohProvisionParticulate(curDateTime, pretime, soh, stationId); - }else { + } else { String soh = calculateDataRate.getMParameter().getSoh(); sohProvision = calCulStationDataService.findSohProvisionParticulate(curDateTime, pretime, soh, stationId); } @@ -571,7 +884,7 @@ public class CalculateDataRateThread implements Runnable{ if (mSpecialparam.containsKey(calculateDataRate.getMStationCode())) { String sphdMetSoh = param.getSphdMetSoh(); sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionParticulate(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId); - }else { + } else { String sphdMetSoh = calculateDataRate.getMParameter().getSphdMetSoh().getParticulateEverydaynums(); sphdMetSohProvision = calCulStationDataService.findSphdMetSohProvisionParticulate(SPHD_NUM, MET_NUM, curDateTime, pretime, sphdMetSoh, stationId); } 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 41cce466..5846020e 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 @@ -29,796 +29,1302 @@ public class CalculateStationData { private MaximumPoolSizeProperties maximumPoolSizeProperties; @Autowired private RedisUtil redisUtil; - - /** - * 初始化配置信息 - */ + //region 初始化配置信息-- 20250430 修改 增加SAUNA2、 SPALAX-PLC节点 public RateParam initParameter() { try { - //文件路径 - String filePath = parameterProperties.getFilePath()+ File.separator +"parameter.xml"; //声明一个实体类存储参数信息 RateParam mRateParam = new RateParam(); + //声明一个接收参数的实体类 + Parameter mParameter = new Parameter(); + //声明一个map 存储特殊的台站及台站相关参数 + Map specialparaMap = new HashMap<>(); + + //文件路径 + String filePath = parameterProperties.getFilePath() + File.separator + "parameter.xml"; //创建一个文档解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //创建文档解析器 DocumentBuilder documentBuilder = factory.newDocumentBuilder(); //读取xml文件生成一个文档 Document document = documentBuilder.parse(filePath); - //声明一个接收参数的实体类 - Parameter mParameter = new Parameter(); - //声明一个map 存储特殊的台站及台站相关参数 - Map specialparaMap = new HashMap<>(); //获取文档的根元素 Element element = document.getDocumentElement(); //获取根元素的子节点 NodeList docChildNodes = element.getChildNodes(); - if (Objects.nonNull(docChildNodes) && docChildNodes.getLength()>0){ + if (docChildNodes.getLength() > 0) { //遍历子节点信息 - for(int i = 0; i < docChildNodes.getLength(); i++) { + 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; j0){ - //遍历子节点数据 - 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; k0){ - //遍历子节点数据 - 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 { + mParameter.setDayspan(Double.parseDouble(value)); + }); + } + childNode = childNode.getNextSibling(); + } + } + + private void parseWarning(Node node, Parameter mParameter) { + Node childNode = node.getFirstChild(); + while (Objects.nonNull(childNode)) { + if ("item".equals(childNode.getNodeName())) { + setAttributeSetter(childNode, "excellent", value -> { + mParameter.setExcellent(Double.parseDouble(value)); + }); + setAttributeSetter(childNode, "good", value -> { + mParameter.setGood(Double.parseDouble(value)); + }); + } + childNode = childNode.getNextSibling(); + } + } + + private void parsePhdf(Node n, Parameter mParameter) { + NodeList childNodes = n.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + Node node = childNodes.item(i); + switch (node.getNodeName()) { + case "SAUNA1": + mParameter.setPhdfSauna(parseStationTypeData(node)); + break; + case "SAUNA2": + mParameter.setPhdfSauna2(parseStationTypeData(node)); + break; + case "SPALAX": + mParameter.setPhdfSpalax(parseStationTypeData(node)); + break; + case "SPALAX-PLC": + mParameter.setPhdfSpalaxPLC(parseStationTypeData(node)); + break; + case "PARTICULATE": + mParameter.setPhdfParticulate(parseStationTypeData(node)); + break; + } + } + } + + private void parsePhd(Node n, Parameter mParameter) { + NodeList childNodes = n.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + Node node = childNodes.item(i); + switch (node.getNodeName()) { + case "SAUNA1": + mParameter.setPhdSauna(parseStationTypeData(node)); + break; + case "SAUNA2": + mParameter.setPhdSauna2(parseStationTypeData(node)); + break; + case "SPALAX": + mParameter.setPhdSpalax(parseStationTypeData(node)); + break; + case "SPALAX-PLC": + mParameter.setPhdSpalaxPLC(parseStationTypeData(node)); + break; + case "PARTICULATE": + mParameter.setPhdParticulate(parseStationTypeData(node)); + break; + } + } + } + + private void parseMet(Node node, Parameter mParameter) { + Node childNode = node.getFirstChild(); + while (Objects.nonNull(childNode)) { + if ("item".equals(childNode.getNodeName())) { + setAttributeSetter(childNode, "number", mParameter::setMet); + } + childNode = childNode.getNextSibling(); + } + } + + private void parseSoh(Node node, Parameter mParameter) { + Node childNode = node.getFirstChild(); + while (Objects.nonNull(childNode)) { + if ("item".equals(childNode.getNodeName())) { + setAttributeSetter(childNode, "number", mParameter::setSoh); + } + childNode = childNode.getNextSibling(); + } + } + + private void parseSphdMetSoh(Node n, Parameter mParameter) { + SphdMetSoh sphdMetSoh = new SphdMetSoh(); + NodeList childNodes = n.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + Node node = childNodes.item(i); + switch (node.getNodeName()) { + case "SAUNA": + sphdMetSoh.setSaunaEverydaynums(getNodeValue(node,"number")); + break; + case "SPALAX": + sphdMetSoh.setSpalaxEverydaynums(getNodeValue(node,"number")); + break; + case "PARTICULATE": + sphdMetSoh.setParticulateEverydaynums(getNodeValue(node,"number")); + break; + } + } + mParameter.setSphdMetSoh(sphdMetSoh); + } + + private void parseSpecial(Node n, Map specialparaMap) { + //声明一个实体类 封装台站参数信息 + NodeList childNodes = n.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + Node node = childNodes.item(i); + if ("STATION".equals(node.getNodeName())) { + String stationName = ""; + Specialpara spePara = new Specialpara(); + NamedNodeMap attributes = node.getAttributes(); + if (Objects.nonNull(attributes)) { + for (int k = 0; k < attributes.getLength(); k++) { + Node item = attributes.item(k); + if ("name".equals(item.getNodeName())) { + stationName = item.getNodeValue(); + } + } + NodeList parameterNodes = node.getChildNodes(); + for (int k = 0; k < parameterNodes.getLength(); k++) { + Node node1 = parameterNodes.item(k); + switch (node1.getNodeName()) { + case "PHDF": + spePara.setPhdf(parseStationTypeData(node1)); + break; + case "PHD": + spePara.setPhd(parseStationTypeData(node1)); + break; + case "SOH": + spePara.setSoh(getNodeValue(node1, "number")); + break; + case "MET": + spePara.setMet(getNodeValue(node1, "number")); + break; + case "SPHD_MET_SOH": + spePara.setSphdMetSoh(getNodeValue(node1, "number")); + break; + } + } + } + specialparaMap.put(stationName, spePara); + } + } + } + + private String getNodeValue(Node node, String attributeName) { + String value = ""; + Node childNode = node.getFirstChild(); + while (Objects.nonNull(childNode)) { + if ("item".equals(childNode.getNodeName())) { + value = setAttributeSetter(childNode, attributeName); + } + childNode = childNode.getNextSibling(); + } + return value; + } + + private StationTypeData parseStationTypeData(Node node) { + StationTypeData typeData = new StationTypeData(); + Node childNode = node.getFirstChild(); + while (Objects.nonNull(childNode)) { + if ("item".equals(childNode.getNodeName())) { + setAttributeSetter(childNode, "collect_low", typeData::setCollectLow); + setAttributeSetter(childNode, "collect_high", typeData::setCollectHigh); + setAttributeSetter(childNode, "live_low", typeData::setLiveLow); + setAttributeSetter(childNode, "live_high", typeData::setLiveHigh); + setAttributeSetter(childNode, "quantity", typeData::setQuantity); + setAttributeSetter(childNode, "xe_volume", typeData::setXeVolume); + setAttributeSetter(childNode, "mdc", typeData::setMdc); + setAttributeSetter(childNode, "nuclide_name", typeData::setNuclideName); + setAttributeSetter(childNode, "live_qc", typeData::setLiveQc); + setAttributeSetter(childNode, "number", typeData::setNumber); + } + childNode = childNode.getNextSibling(); + } + return typeData; + } + + private void setAttributeSetter(Node node, String attributeName, AttributeSetter setter) { + NamedNodeMap attributes = node.getAttributes(); + if (Objects.nonNull(attributes)) { + for (int i = 0; i < attributes.getLength(); i++) { + Node item = attributes.item(i); + if (attributeName.equals(item.getNodeName())) { + setter.setValue(item.getNodeValue()); + } + } + } + } + + private String setAttributeSetter(Node node, String attributeName) { + String value = ""; + NamedNodeMap attributes = node.getAttributes(); + if (Objects.nonNull(attributes)) { + for (int i = 0; i < attributes.getLength(); i++) { + Node item = attributes.item(i); + if (attributeName.equals(item.getNodeName())) { + value = item.getNodeValue(); + } + } + } + return value; + } + + + @FunctionalInterface + private interface AttributeSetter { + void setValue(String value); + } + //endregion + + //region 初始化配置信息 /** - * 多线程获取台站数据的提供率和有效率 + * 初始化配置信息 + */ +// public RateParam initParameter() { +// try { +// //文件路径 +// String filePath = parameterProperties.getFilePath() + 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 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); +// // 判断子节点名称是否是 SAUNA1 +// if (node.getNodeName().equals("SAUNA1")) { +// // 获取子节点下的第一个节点信息 +// 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("SAUNA2")) { +// // 获取子节点下的第一个节点信息 +// 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.setPhdfSauna2(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("SPALAX-PLC")) { +// +// // 判断当前节点名称是否是 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.setPhdfSpalaxPLC(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("SAUNA1")) { +// //获取子节点下的第一个节点 +// 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("SAUNA2")) { +// //获取子节点下的第一个节点 +// 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.setPhdSauna2(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("SPALAX-PLC")) { +// +// //获取节点下的第一个子节点 +// 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.setPhdSpalaxPLC(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); +// } +// } +//endregion + + /** + * 多线程获取台站数据的提供率和有效率 + * * @param stationInfos 台站信息列表 */ public void mutiThreadGetStationInfo(List stationInfos, RateParam mRateParam) { //声明一个数组用于接收最后的结果情况 - Map finallySta = Objects.nonNull(redisUtil.get("dataStationInfoList"))? (Map) redisUtil.get("dataStationInfoList"):new HashMap<>(); + Map finallySta = Objects.nonNull(redisUtil.get("dataStationInfoList")) ? (Map) redisUtil.get("dataStationInfoList") : new HashMap<>(); //声明一个线程池 ThreadPoolExecutor poolExecutor = null; //声明一个CountDownLatch监听是否完成全部线程 @@ -829,7 +1335,7 @@ public class CalculateStationData { int works = stationInfos.size(); threadNum = works; // 如果线程数不等于0 - if (threadNum != 0){ + if (threadNum != 0) { //获取机器可用核心数 int maximumPoolSize = maximumPoolSizeProperties.getStation();//Runtime.getRuntime().availableProcessors(); //初始化线程池 @@ -842,13 +1348,13 @@ public class CalculateStationData { return t; } }; - poolExecutor = new ThreadPoolExecutor(15,maximumPoolSize,10, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(),threadFactory); + poolExecutor = new ThreadPoolExecutor(15, maximumPoolSize, 10, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), threadFactory); } // 线程数 等于 需要处理的台站数量 - if( threadNum == works ){ + if (threadNum == works) { countDownLatch = new CountDownLatch(threadNum); //遍历台站信息 - for (int i = 0 ; i < works; i++){ + for (int i = 0; i < works; i++) { //获取台站信息 StationInfo stationInfo = stationInfos.get(i); //声明一个实体类 @@ -865,7 +1371,7 @@ public class CalculateStationData { throw new RuntimeException(e); } finally { //关闭线程池 - if(poolExecutor != null) { + if (poolExecutor != null) { poolExecutor.shutdownNow(); } } diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/CalculateDataRate.java b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/CalculateDataRate.java index 0e8cc14c..0d0a31f2 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/CalculateDataRate.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/CalculateDataRate.java @@ -25,6 +25,7 @@ public class CalculateDataRate implements Serializable { private String mStationCode; private String mStationType; + private String mEfficCalculType; double mDayspan; // 天数(用来统计数据接受率和有效率) diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/Parameter.java b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/Parameter.java index 949588ad..3a1291c7 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/Parameter.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/Parameter.java @@ -14,14 +14,17 @@ public class Parameter implements Serializable { private double good; private StationTypeData phdfSauna; + private StationTypeData phdfSauna2; private StationTypeData phdfSpalax; - + private StationTypeData phdfSpalaxPLC; private StationTypeData phdfParticulate; private StationTypeData phdSauna; + private StationTypeData phdSauna2; private StationTypeData phdSpalax; + private StationTypeData phdSpalaxPLC; private StationTypeData phdParticulate; diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/StationInfo.java b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/StationInfo.java index cb614ead..a0f5b914 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/StationInfo.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/entity/data/StationInfo.java @@ -37,4 +37,6 @@ public class StationInfo implements Serializable { private String quality; + private String efficCalculType; + } diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/mapper/CalCulStationInfoMapper.java b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/mapper/CalCulStationInfoMapper.java index cf730183..68c617ba 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/mapper/CalCulStationInfoMapper.java +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/mapper/CalCulStationInfoMapper.java @@ -66,4 +66,17 @@ public interface CalCulStationInfoMapper { List getUsed(Integer stationId); + //region 新加计算台站类型数据提供率 + ProvisionData findPhdfProvisionRateSauna2(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId); + ProvisionData findPhdProvisionRateSauna2(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId); + ProvisionData findPhdProvisionEfficiencySauna2(@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 findSphdProvisionSauna2(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("stationId") String stationId); + + ProvisionData findPhdfProvisionEfficiencySpalaxPLC(@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 findPhdProvisionRateSpalaxPLC(@Param("curDateTime") String curDateTime, @Param("pretime") String pretime, @Param("number") String number, @Param("stationId") String stationId); + + ProvisionData findPhdProvisionEfficiencySpalaxPLC(@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); + //endregion } diff --git a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/mapper/xml/calCulStationInfoMapper.xml b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/mapper/xml/calCulStationInfoMapper.xml index 52081c98..b3f4c43b 100644 --- a/jeecg-module-station-operation/src/main/java/org/jeecg/modules/mapper/xml/calCulStationInfoMapper.xml +++ b/jeecg-module-station-operation/src/main/java/org/jeecg/modules/mapper/xml/calCulStationInfoMapper.xml @@ -27,7 +27,22 @@ LEFT JOIN CONFIGURATION.GARDS_STATIONS sta on sta.station_id = sdata.station_id substr(sta.station_code, 3,1)='X' - and sta.type='SAUNA' + and sta.EFFIC_CALCUL_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} + + + + + + + + + + + + + + +