diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java index f63ce35..cf13e94 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java @@ -767,7 +767,7 @@ checkData.setStability(String.valueOf(repeatabilityX)); } //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -944,7 +944,7 @@ checkData.getKuValueFive(), checkData.getKuValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -992,7 +992,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1040,7 +1040,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1088,7 +1088,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1136,7 +1136,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java index f63ce35..cf13e94 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java @@ -767,7 +767,7 @@ checkData.setStability(String.valueOf(repeatabilityX)); } //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -944,7 +944,7 @@ checkData.getKuValueFive(), checkData.getKuValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -992,7 +992,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1040,7 +1040,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1088,7 +1088,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1136,7 +1136,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java index dd01dc2..7d4adb2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java @@ -796,11 +796,15 @@ } private static void getAbsoluteErrorElectricalSafetyTwo(BizBusinessDeviceMeasureDataElectricalSafety measureData) { - measureData.setAbsoluteError(String.valueOf( - new BigDecimal(measureData.getMeasureIndicationValue()) - .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) - .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) - )); + if ("/".equals(measureData.getZeroRemoveMeasureStandardValue())) { + measureData.setAbsoluteError("/"); + } else { + measureData.setAbsoluteError(String.valueOf( + new BigDecimal(measureData.getMeasureIndicationValue()) + .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) + .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) + )); + } } private static void getMaximumErrorElectricalSafetyOne(BizBusinessDeviceMeasureDataElectricalSafety measureData) { @@ -1605,7 +1609,7 @@ BigDecimal bOne = new BigDecimal(measureData.getBOne()); BigDecimal bTwo = new BigDecimal(measureData.getBTwo()); //Δmi(单位固定mg)计算 - BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP); measureData.setDeltaM(String.valueOf(deltaM)); if (StringUtils.isNotEmpty(measureData.getPtOne())) { List deltaMList = ptOneDeltaMMap.get(measureData.getDataType()); @@ -1660,7 +1664,7 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //标准偏差s(单位固定mg)计算 BigDecimal beforeSum = BigDecimal.ZERO; @@ -1668,17 +1672,17 @@ beforeSum = beforeSum.add((number.subtract(deltaMAverage)).multiply(number.subtract(deltaMAverage))); } BigDecimal divide = beforeSum.divide(BigDecimal.valueOf(deltaMList.size() - 1), 4, RoundingMode.HALF_UP); - BigDecimal sValue = sqrt(divide, 4).stripTrailingZeros(); + BigDecimal sValue = sqrt(divide, 4); measureData.setSValue(String.valueOf(sValue)); //UR(单位固定mg)计算 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setURValue(String.valueOf(URValue)); } else if ("2".equals(measureData.getDataType())) { //偏载误差 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); BigDecimal sValue = BigDecimal.ZERO; //Δmi'最大值、最大偏载位置点计算 if (StringUtils.isNotEmpty(measureData.getPtOne())) { @@ -1701,7 +1705,7 @@ sValue = new BigDecimal(measureData.getLoadPointBSValue()); } //UE(单位固定mg)计算 - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setUEValue(String.valueOf(URValue)); } else if ("3".equals(measureData.getDataType())) { //局部示值误差 @@ -1710,11 +1714,11 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //ms-Δm(单位固定mg)计算 BigDecimal mSValue = new BigDecimal(measureData.getMSValue()); - BigDecimal mReduceDeltaM = mSValue.subtract(new BigDecimal(measureData.getDeltaM())); + BigDecimal mReduceDeltaM = mSValue.subtract(deltaMAverage); measureData.setMReduceDeltaM(String.valueOf(mReduceDeltaM)); //US(单位固定mg)计算 BigDecimal sValue = BigDecimal.ZERO; @@ -1728,7 +1732,7 @@ BigDecimal mpesValue = new BigDecimal(measureData.getMpesValue()); BigDecimal ums = mpesValue.divide(BigDecimal.valueOf(6), 4, RoundingMode.HALF_UP); BigDecimal ub = new BigDecimal(measureData.getUBValue()); - BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)).stripTrailingZeros(); + BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)); measureData.setUSValue(String.valueOf(usValue)); } } @@ -3159,4 +3163,22 @@ return average; } + //科学计数法测试 + public static void main(String[] args) { + //当BigDecimal绝对值小于10^-7就会转科学计数法来表示,大于10^-7不会转,整数也不会转 + BigDecimal a = new BigDecimal("0.000001");//0.000001 + BigDecimal e = new BigDecimal("-0.0000001");//1E-7 + BigDecimal c = new BigDecimal("12345678"); + BigDecimal b = new BigDecimal("10000000000000063465347347634"); + //stripTrailingZeros():去除小数尾部所有的0,并将10的倍数的数转为科学计数法 + String d = new BigDecimal("110").stripTrailingZeros().toString();//1.1E+2 + String f = new BigDecimal("10.4").stripTrailingZeros().toString();//10.4 + System.out.println(a); + System.out.println(b); + System.out.println(e); + System.out.println(c); + System.out.println(d); + System.out.println(f); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java index f63ce35..cf13e94 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java @@ -767,7 +767,7 @@ checkData.setStability(String.valueOf(repeatabilityX)); } //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -944,7 +944,7 @@ checkData.getKuValueFive(), checkData.getKuValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -992,7 +992,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1040,7 +1040,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1088,7 +1088,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1136,7 +1136,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java index dd01dc2..7d4adb2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java @@ -796,11 +796,15 @@ } private static void getAbsoluteErrorElectricalSafetyTwo(BizBusinessDeviceMeasureDataElectricalSafety measureData) { - measureData.setAbsoluteError(String.valueOf( - new BigDecimal(measureData.getMeasureIndicationValue()) - .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) - .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) - )); + if ("/".equals(measureData.getZeroRemoveMeasureStandardValue())) { + measureData.setAbsoluteError("/"); + } else { + measureData.setAbsoluteError(String.valueOf( + new BigDecimal(measureData.getMeasureIndicationValue()) + .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) + .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) + )); + } } private static void getMaximumErrorElectricalSafetyOne(BizBusinessDeviceMeasureDataElectricalSafety measureData) { @@ -1605,7 +1609,7 @@ BigDecimal bOne = new BigDecimal(measureData.getBOne()); BigDecimal bTwo = new BigDecimal(measureData.getBTwo()); //Δmi(单位固定mg)计算 - BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP); measureData.setDeltaM(String.valueOf(deltaM)); if (StringUtils.isNotEmpty(measureData.getPtOne())) { List deltaMList = ptOneDeltaMMap.get(measureData.getDataType()); @@ -1660,7 +1664,7 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //标准偏差s(单位固定mg)计算 BigDecimal beforeSum = BigDecimal.ZERO; @@ -1668,17 +1672,17 @@ beforeSum = beforeSum.add((number.subtract(deltaMAverage)).multiply(number.subtract(deltaMAverage))); } BigDecimal divide = beforeSum.divide(BigDecimal.valueOf(deltaMList.size() - 1), 4, RoundingMode.HALF_UP); - BigDecimal sValue = sqrt(divide, 4).stripTrailingZeros(); + BigDecimal sValue = sqrt(divide, 4); measureData.setSValue(String.valueOf(sValue)); //UR(单位固定mg)计算 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setURValue(String.valueOf(URValue)); } else if ("2".equals(measureData.getDataType())) { //偏载误差 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); BigDecimal sValue = BigDecimal.ZERO; //Δmi'最大值、最大偏载位置点计算 if (StringUtils.isNotEmpty(measureData.getPtOne())) { @@ -1701,7 +1705,7 @@ sValue = new BigDecimal(measureData.getLoadPointBSValue()); } //UE(单位固定mg)计算 - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setUEValue(String.valueOf(URValue)); } else if ("3".equals(measureData.getDataType())) { //局部示值误差 @@ -1710,11 +1714,11 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //ms-Δm(单位固定mg)计算 BigDecimal mSValue = new BigDecimal(measureData.getMSValue()); - BigDecimal mReduceDeltaM = mSValue.subtract(new BigDecimal(measureData.getDeltaM())); + BigDecimal mReduceDeltaM = mSValue.subtract(deltaMAverage); measureData.setMReduceDeltaM(String.valueOf(mReduceDeltaM)); //US(单位固定mg)计算 BigDecimal sValue = BigDecimal.ZERO; @@ -1728,7 +1732,7 @@ BigDecimal mpesValue = new BigDecimal(measureData.getMpesValue()); BigDecimal ums = mpesValue.divide(BigDecimal.valueOf(6), 4, RoundingMode.HALF_UP); BigDecimal ub = new BigDecimal(measureData.getUBValue()); - BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)).stripTrailingZeros(); + BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)); measureData.setUSValue(String.valueOf(usValue)); } } @@ -3159,4 +3163,22 @@ return average; } + //科学计数法测试 + public static void main(String[] args) { + //当BigDecimal绝对值小于10^-7就会转科学计数法来表示,大于10^-7不会转,整数也不会转 + BigDecimal a = new BigDecimal("0.000001");//0.000001 + BigDecimal e = new BigDecimal("-0.0000001");//1E-7 + BigDecimal c = new BigDecimal("12345678"); + BigDecimal b = new BigDecimal("10000000000000063465347347634"); + //stripTrailingZeros():去除小数尾部所有的0,并将10的倍数的数转为科学计数法 + String d = new BigDecimal("110").stripTrailingZeros().toString();//1.1E+2 + String f = new BigDecimal("10.4").stripTrailingZeros().toString();//10.4 + System.out.println(a); + System.out.println(b); + System.out.println(e); + System.out.println(c); + System.out.println(d); + System.out.println(f); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java index 8bb22d3..65b4af6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java @@ -222,7 +222,10 @@ if (itemCategoryName.contains("电子式绝缘电阻表(指针式)") || itemCategoryName.contains("兆欧表")) { if (StringUtils.isNotEmpty(itemData.getMeasureIndicationValue()) && StringUtils.isNotEmpty(itemData.getAccuracyA())) { //最大允许误差= ±(准确度a*被检表示值) - BigDecimal maximumError = new BigDecimal(itemData.getAccuracyA()).multiply(new BigDecimal(itemData.getMeasureIndicationValue())); + BigDecimal maximumError = BigDecimal.ZERO; + if (!"∞".equals(itemData.getMeasureIndicationValue())) { + maximumError = new BigDecimal(itemData.getAccuracyA()).multiply(new BigDecimal(itemData.getMeasureIndicationValue())); + } itemData.setMaximumError("±" + maximumError); } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java index f63ce35..cf13e94 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java @@ -767,7 +767,7 @@ checkData.setStability(String.valueOf(repeatabilityX)); } //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -944,7 +944,7 @@ checkData.getKuValueFive(), checkData.getKuValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -992,7 +992,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1040,7 +1040,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1088,7 +1088,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1136,7 +1136,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java index dd01dc2..7d4adb2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java @@ -796,11 +796,15 @@ } private static void getAbsoluteErrorElectricalSafetyTwo(BizBusinessDeviceMeasureDataElectricalSafety measureData) { - measureData.setAbsoluteError(String.valueOf( - new BigDecimal(measureData.getMeasureIndicationValue()) - .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) - .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) - )); + if ("/".equals(measureData.getZeroRemoveMeasureStandardValue())) { + measureData.setAbsoluteError("/"); + } else { + measureData.setAbsoluteError(String.valueOf( + new BigDecimal(measureData.getMeasureIndicationValue()) + .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) + .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) + )); + } } private static void getMaximumErrorElectricalSafetyOne(BizBusinessDeviceMeasureDataElectricalSafety measureData) { @@ -1605,7 +1609,7 @@ BigDecimal bOne = new BigDecimal(measureData.getBOne()); BigDecimal bTwo = new BigDecimal(measureData.getBTwo()); //Δmi(单位固定mg)计算 - BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP); measureData.setDeltaM(String.valueOf(deltaM)); if (StringUtils.isNotEmpty(measureData.getPtOne())) { List deltaMList = ptOneDeltaMMap.get(measureData.getDataType()); @@ -1660,7 +1664,7 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //标准偏差s(单位固定mg)计算 BigDecimal beforeSum = BigDecimal.ZERO; @@ -1668,17 +1672,17 @@ beforeSum = beforeSum.add((number.subtract(deltaMAverage)).multiply(number.subtract(deltaMAverage))); } BigDecimal divide = beforeSum.divide(BigDecimal.valueOf(deltaMList.size() - 1), 4, RoundingMode.HALF_UP); - BigDecimal sValue = sqrt(divide, 4).stripTrailingZeros(); + BigDecimal sValue = sqrt(divide, 4); measureData.setSValue(String.valueOf(sValue)); //UR(单位固定mg)计算 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setURValue(String.valueOf(URValue)); } else if ("2".equals(measureData.getDataType())) { //偏载误差 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); BigDecimal sValue = BigDecimal.ZERO; //Δmi'最大值、最大偏载位置点计算 if (StringUtils.isNotEmpty(measureData.getPtOne())) { @@ -1701,7 +1705,7 @@ sValue = new BigDecimal(measureData.getLoadPointBSValue()); } //UE(单位固定mg)计算 - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setUEValue(String.valueOf(URValue)); } else if ("3".equals(measureData.getDataType())) { //局部示值误差 @@ -1710,11 +1714,11 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //ms-Δm(单位固定mg)计算 BigDecimal mSValue = new BigDecimal(measureData.getMSValue()); - BigDecimal mReduceDeltaM = mSValue.subtract(new BigDecimal(measureData.getDeltaM())); + BigDecimal mReduceDeltaM = mSValue.subtract(deltaMAverage); measureData.setMReduceDeltaM(String.valueOf(mReduceDeltaM)); //US(单位固定mg)计算 BigDecimal sValue = BigDecimal.ZERO; @@ -1728,7 +1732,7 @@ BigDecimal mpesValue = new BigDecimal(measureData.getMpesValue()); BigDecimal ums = mpesValue.divide(BigDecimal.valueOf(6), 4, RoundingMode.HALF_UP); BigDecimal ub = new BigDecimal(measureData.getUBValue()); - BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)).stripTrailingZeros(); + BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)); measureData.setUSValue(String.valueOf(usValue)); } } @@ -3159,4 +3163,22 @@ return average; } + //科学计数法测试 + public static void main(String[] args) { + //当BigDecimal绝对值小于10^-7就会转科学计数法来表示,大于10^-7不会转,整数也不会转 + BigDecimal a = new BigDecimal("0.000001");//0.000001 + BigDecimal e = new BigDecimal("-0.0000001");//1E-7 + BigDecimal c = new BigDecimal("12345678"); + BigDecimal b = new BigDecimal("10000000000000063465347347634"); + //stripTrailingZeros():去除小数尾部所有的0,并将10的倍数的数转为科学计数法 + String d = new BigDecimal("110").stripTrailingZeros().toString();//1.1E+2 + String f = new BigDecimal("10.4").stripTrailingZeros().toString();//10.4 + System.out.println(a); + System.out.println(b); + System.out.println(e); + System.out.println(c); + System.out.println(d); + System.out.println(f); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java index 8bb22d3..65b4af6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java @@ -222,7 +222,10 @@ if (itemCategoryName.contains("电子式绝缘电阻表(指针式)") || itemCategoryName.contains("兆欧表")) { if (StringUtils.isNotEmpty(itemData.getMeasureIndicationValue()) && StringUtils.isNotEmpty(itemData.getAccuracyA())) { //最大允许误差= ±(准确度a*被检表示值) - BigDecimal maximumError = new BigDecimal(itemData.getAccuracyA()).multiply(new BigDecimal(itemData.getMeasureIndicationValue())); + BigDecimal maximumError = BigDecimal.ZERO; + if (!"∞".equals(itemData.getMeasureIndicationValue())) { + maximumError = new BigDecimal(itemData.getAccuracyA()).multiply(new BigDecimal(itemData.getMeasureIndicationValue())); + } itemData.setMaximumError("±" + maximumError); } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java index 459af9c..60a541e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -9,6 +10,7 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; @@ -131,6 +133,26 @@ @TableField("technical_index") private String technicalIndex; + public String getTechnicalIndex() { + if (!StringUtils.isEmpty(technicalIndex)) { + //将bigDecimal转为科学计数法,String.format转换方式,bigDecimal.toString()和bigDecimal.toPlainString()不生效 + if (technicalIndex.contains("±")) { + int scale = new BigDecimal(technicalIndex.replace("±", "")).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex.replace("±", ""))); + return "±" + format; + } + } else { + int scale = new BigDecimal(technicalIndex).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex)); + return format; + } + } + } + return technicalIndex; + } + /** * 技术指标单位/输入灵敏度技术指标单位/上升时间技术指标单位 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java index f63ce35..cf13e94 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java @@ -767,7 +767,7 @@ checkData.setStability(String.valueOf(repeatabilityX)); } //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -944,7 +944,7 @@ checkData.getKuValueFive(), checkData.getKuValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -992,7 +992,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1040,7 +1040,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1088,7 +1088,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1136,7 +1136,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java index dd01dc2..7d4adb2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java @@ -796,11 +796,15 @@ } private static void getAbsoluteErrorElectricalSafetyTwo(BizBusinessDeviceMeasureDataElectricalSafety measureData) { - measureData.setAbsoluteError(String.valueOf( - new BigDecimal(measureData.getMeasureIndicationValue()) - .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) - .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) - )); + if ("/".equals(measureData.getZeroRemoveMeasureStandardValue())) { + measureData.setAbsoluteError("/"); + } else { + measureData.setAbsoluteError(String.valueOf( + new BigDecimal(measureData.getMeasureIndicationValue()) + .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) + .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) + )); + } } private static void getMaximumErrorElectricalSafetyOne(BizBusinessDeviceMeasureDataElectricalSafety measureData) { @@ -1605,7 +1609,7 @@ BigDecimal bOne = new BigDecimal(measureData.getBOne()); BigDecimal bTwo = new BigDecimal(measureData.getBTwo()); //Δmi(单位固定mg)计算 - BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP); measureData.setDeltaM(String.valueOf(deltaM)); if (StringUtils.isNotEmpty(measureData.getPtOne())) { List deltaMList = ptOneDeltaMMap.get(measureData.getDataType()); @@ -1660,7 +1664,7 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //标准偏差s(单位固定mg)计算 BigDecimal beforeSum = BigDecimal.ZERO; @@ -1668,17 +1672,17 @@ beforeSum = beforeSum.add((number.subtract(deltaMAverage)).multiply(number.subtract(deltaMAverage))); } BigDecimal divide = beforeSum.divide(BigDecimal.valueOf(deltaMList.size() - 1), 4, RoundingMode.HALF_UP); - BigDecimal sValue = sqrt(divide, 4).stripTrailingZeros(); + BigDecimal sValue = sqrt(divide, 4); measureData.setSValue(String.valueOf(sValue)); //UR(单位固定mg)计算 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setURValue(String.valueOf(URValue)); } else if ("2".equals(measureData.getDataType())) { //偏载误差 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); BigDecimal sValue = BigDecimal.ZERO; //Δmi'最大值、最大偏载位置点计算 if (StringUtils.isNotEmpty(measureData.getPtOne())) { @@ -1701,7 +1705,7 @@ sValue = new BigDecimal(measureData.getLoadPointBSValue()); } //UE(单位固定mg)计算 - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setUEValue(String.valueOf(URValue)); } else if ("3".equals(measureData.getDataType())) { //局部示值误差 @@ -1710,11 +1714,11 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //ms-Δm(单位固定mg)计算 BigDecimal mSValue = new BigDecimal(measureData.getMSValue()); - BigDecimal mReduceDeltaM = mSValue.subtract(new BigDecimal(measureData.getDeltaM())); + BigDecimal mReduceDeltaM = mSValue.subtract(deltaMAverage); measureData.setMReduceDeltaM(String.valueOf(mReduceDeltaM)); //US(单位固定mg)计算 BigDecimal sValue = BigDecimal.ZERO; @@ -1728,7 +1732,7 @@ BigDecimal mpesValue = new BigDecimal(measureData.getMpesValue()); BigDecimal ums = mpesValue.divide(BigDecimal.valueOf(6), 4, RoundingMode.HALF_UP); BigDecimal ub = new BigDecimal(measureData.getUBValue()); - BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)).stripTrailingZeros(); + BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)); measureData.setUSValue(String.valueOf(usValue)); } } @@ -3159,4 +3163,22 @@ return average; } + //科学计数法测试 + public static void main(String[] args) { + //当BigDecimal绝对值小于10^-7就会转科学计数法来表示,大于10^-7不会转,整数也不会转 + BigDecimal a = new BigDecimal("0.000001");//0.000001 + BigDecimal e = new BigDecimal("-0.0000001");//1E-7 + BigDecimal c = new BigDecimal("12345678"); + BigDecimal b = new BigDecimal("10000000000000063465347347634"); + //stripTrailingZeros():去除小数尾部所有的0,并将10的倍数的数转为科学计数法 + String d = new BigDecimal("110").stripTrailingZeros().toString();//1.1E+2 + String f = new BigDecimal("10.4").stripTrailingZeros().toString();//10.4 + System.out.println(a); + System.out.println(b); + System.out.println(e); + System.out.println(c); + System.out.println(d); + System.out.println(f); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java index 8bb22d3..65b4af6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java @@ -222,7 +222,10 @@ if (itemCategoryName.contains("电子式绝缘电阻表(指针式)") || itemCategoryName.contains("兆欧表")) { if (StringUtils.isNotEmpty(itemData.getMeasureIndicationValue()) && StringUtils.isNotEmpty(itemData.getAccuracyA())) { //最大允许误差= ±(准确度a*被检表示值) - BigDecimal maximumError = new BigDecimal(itemData.getAccuracyA()).multiply(new BigDecimal(itemData.getMeasureIndicationValue())); + BigDecimal maximumError = BigDecimal.ZERO; + if (!"∞".equals(itemData.getMeasureIndicationValue())) { + maximumError = new BigDecimal(itemData.getAccuracyA()).multiply(new BigDecimal(itemData.getMeasureIndicationValue())); + } itemData.setMaximumError("±" + maximumError); } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java index 459af9c..60a541e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -9,6 +10,7 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; @@ -131,6 +133,26 @@ @TableField("technical_index") private String technicalIndex; + public String getTechnicalIndex() { + if (!StringUtils.isEmpty(technicalIndex)) { + //将bigDecimal转为科学计数法,String.format转换方式,bigDecimal.toString()和bigDecimal.toPlainString()不生效 + if (technicalIndex.contains("±")) { + int scale = new BigDecimal(technicalIndex.replace("±", "")).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex.replace("±", ""))); + return "±" + format; + } + } else { + int scale = new BigDecimal(technicalIndex).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex)); + return format; + } + } + } + return technicalIndex; + } + /** * 技术指标单位/输入灵敏度技术指标单位/上升时间技术指标单位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemDataCesiumAtom.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemDataCesiumAtom.java index 71ffd9a..fd634f5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemDataCesiumAtom.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemDataCesiumAtom.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -8,6 +9,7 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.math.BigDecimal; /** *

@@ -98,6 +100,26 @@ @TableField("technical_index") private String technicalIndex; + public String getTechnicalIndex() { + if (!StringUtils.isEmpty(technicalIndex)) { + //将bigDecimal转为科学计数法,String.format转换方式,bigDecimal.toString()和bigDecimal.toPlainString()不生效 + if (technicalIndex.contains("±")) { + int scale = new BigDecimal(technicalIndex.replace("±", "")).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex.replace("±", ""))); + return "±" + format; + } + } else { + int scale = new BigDecimal(technicalIndex).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex)); + return format; + } + } + } + return technicalIndex; + } + /** * 技术指标单位/输入灵敏度技术指标单位/上升时间技术指标单位 */ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java index f63ce35..cf13e94 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CheckInfoFormulaCalculateUtil.java @@ -767,7 +767,7 @@ checkData.setStability(String.valueOf(repeatabilityX)); } //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -944,7 +944,7 @@ checkData.getKuValueFive(), checkData.getKuValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -992,7 +992,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1040,7 +1040,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (repeatability.compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1088,7 +1088,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { @@ -1136,7 +1136,7 @@ checkData.getTestValueFour(), checkData.getTestValueFive(), checkData.getTestValueSix(), average); checkData.setStability(String.valueOf(repeatability)); //结论 - if (new BigDecimal(checkData.getStandardDeviation()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { + if (new BigDecimal(checkData.getStability()).compareTo(new BigDecimal(checkData.getUrel())) >= 0) { checkData.setLessThan(0); temConclusionJudge = 1; } else { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java index dd01dc2..7d4adb2 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureInfoFormulaCalculateUtil.java @@ -796,11 +796,15 @@ } private static void getAbsoluteErrorElectricalSafetyTwo(BizBusinessDeviceMeasureDataElectricalSafety measureData) { - measureData.setAbsoluteError(String.valueOf( - new BigDecimal(measureData.getMeasureIndicationValue()) - .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) - .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) - )); + if ("/".equals(measureData.getZeroRemoveMeasureStandardValue())) { + measureData.setAbsoluteError("/"); + } else { + measureData.setAbsoluteError(String.valueOf( + new BigDecimal(measureData.getMeasureIndicationValue()) + .subtract(new BigDecimal(measureData.getZeroRemoveMeasureStandardValue())) + .setScale(measureData.getResolutionDigit(), RoundingMode.HALF_UP) + )); + } } private static void getMaximumErrorElectricalSafetyOne(BizBusinessDeviceMeasureDataElectricalSafety measureData) { @@ -1605,7 +1609,7 @@ BigDecimal bOne = new BigDecimal(measureData.getBOne()); BigDecimal bTwo = new BigDecimal(measureData.getBTwo()); //Δmi(单位固定mg)计算 - BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaM = (bOne.add(bTwo).subtract(aOne).subtract(aTwo)).multiply(BigDecimal.valueOf(1000)).setScale(4, RoundingMode.HALF_UP); measureData.setDeltaM(String.valueOf(deltaM)); if (StringUtils.isNotEmpty(measureData.getPtOne())) { List deltaMList = ptOneDeltaMMap.get(measureData.getDataType()); @@ -1660,7 +1664,7 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //标准偏差s(单位固定mg)计算 BigDecimal beforeSum = BigDecimal.ZERO; @@ -1668,17 +1672,17 @@ beforeSum = beforeSum.add((number.subtract(deltaMAverage)).multiply(number.subtract(deltaMAverage))); } BigDecimal divide = beforeSum.divide(BigDecimal.valueOf(deltaMList.size() - 1), 4, RoundingMode.HALF_UP); - BigDecimal sValue = sqrt(divide, 4).stripTrailingZeros(); + BigDecimal sValue = sqrt(divide, 4); measureData.setSValue(String.valueOf(sValue)); //UR(单位固定mg)计算 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setURValue(String.valueOf(URValue)); } else if ("2".equals(measureData.getDataType())) { //偏载误差 BigDecimal actualDivisionValue = new BigDecimal(measureData.getActualDivisionValue()); - BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal Ud = actualDivisionValue.divide(sqrt(BigDecimal.valueOf(6), 4), 4, RoundingMode.HALF_UP); BigDecimal sValue = BigDecimal.ZERO; //Δmi'最大值、最大偏载位置点计算 if (StringUtils.isNotEmpty(measureData.getPtOne())) { @@ -1701,7 +1705,7 @@ sValue = new BigDecimal(measureData.getLoadPointBSValue()); } //UE(单位固定mg)计算 - BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal URValue = sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)), 4).multiply(BigDecimal.valueOf(2)).setScale(4, RoundingMode.HALF_UP); measureData.setUEValue(String.valueOf(URValue)); } else if ("3".equals(measureData.getDataType())) { //局部示值误差 @@ -1710,11 +1714,11 @@ for (BigDecimal number : deltaMList) { sum = sum.add(number); } - BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP).stripTrailingZeros(); + BigDecimal deltaMAverage = sum.divide(BigDecimal.valueOf(deltaMList.size()), 4, RoundingMode.HALF_UP); measureData.setDeltaMAverage(String.valueOf(deltaMAverage)); //ms-Δm(单位固定mg)计算 BigDecimal mSValue = new BigDecimal(measureData.getMSValue()); - BigDecimal mReduceDeltaM = mSValue.subtract(new BigDecimal(measureData.getDeltaM())); + BigDecimal mReduceDeltaM = mSValue.subtract(deltaMAverage); measureData.setMReduceDeltaM(String.valueOf(mReduceDeltaM)); //US(单位固定mg)计算 BigDecimal sValue = BigDecimal.ZERO; @@ -1728,7 +1732,7 @@ BigDecimal mpesValue = new BigDecimal(measureData.getMpesValue()); BigDecimal ums = mpesValue.divide(BigDecimal.valueOf(6), 4, RoundingMode.HALF_UP); BigDecimal ub = new BigDecimal(measureData.getUBValue()); - BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)).stripTrailingZeros(); + BigDecimal usValue = (sqrt(sValue.multiply(sValue).add(Ud.multiply(Ud)).add(ums.multiply(ums)).add(ub.multiply(ub)), 4)).multiply(BigDecimal.valueOf(2)); measureData.setUSValue(String.valueOf(usValue)); } } @@ -3159,4 +3163,22 @@ return average; } + //科学计数法测试 + public static void main(String[] args) { + //当BigDecimal绝对值小于10^-7就会转科学计数法来表示,大于10^-7不会转,整数也不会转 + BigDecimal a = new BigDecimal("0.000001");//0.000001 + BigDecimal e = new BigDecimal("-0.0000001");//1E-7 + BigDecimal c = new BigDecimal("12345678"); + BigDecimal b = new BigDecimal("10000000000000063465347347634"); + //stripTrailingZeros():去除小数尾部所有的0,并将10的倍数的数转为科学计数法 + String d = new BigDecimal("110").stripTrailingZeros().toString();//1.1E+2 + String f = new BigDecimal("10.4").stripTrailingZeros().toString();//10.4 + System.out.println(a); + System.out.println(b); + System.out.println(e); + System.out.println(c); + System.out.println(d); + System.out.println(f); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java index 8bb22d3..65b4af6 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/MeasureItemFormulaCalculateUtil.java @@ -222,7 +222,10 @@ if (itemCategoryName.contains("电子式绝缘电阻表(指针式)") || itemCategoryName.contains("兆欧表")) { if (StringUtils.isNotEmpty(itemData.getMeasureIndicationValue()) && StringUtils.isNotEmpty(itemData.getAccuracyA())) { //最大允许误差= ±(准确度a*被检表示值) - BigDecimal maximumError = new BigDecimal(itemData.getAccuracyA()).multiply(new BigDecimal(itemData.getMeasureIndicationValue())); + BigDecimal maximumError = BigDecimal.ZERO; + if (!"∞".equals(itemData.getMeasureIndicationValue())) { + maximumError = new BigDecimal(itemData.getAccuracyA()).multiply(new BigDecimal(itemData.getMeasureIndicationValue())); + } itemData.setMaximumError("±" + maximumError); } } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java index 459af9c..60a541e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCesiumAtom.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -9,6 +10,7 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; @@ -131,6 +133,26 @@ @TableField("technical_index") private String technicalIndex; + public String getTechnicalIndex() { + if (!StringUtils.isEmpty(technicalIndex)) { + //将bigDecimal转为科学计数法,String.format转换方式,bigDecimal.toString()和bigDecimal.toPlainString()不生效 + if (technicalIndex.contains("±")) { + int scale = new BigDecimal(technicalIndex.replace("±", "")).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex.replace("±", ""))); + return "±" + format; + } + } else { + int scale = new BigDecimal(technicalIndex).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex)); + return format; + } + } + } + return technicalIndex; + } + /** * 技术指标单位/输入灵敏度技术指标单位/上升时间技术指标单位 */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemDataCesiumAtom.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemDataCesiumAtom.java index 71ffd9a..fd634f5 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemDataCesiumAtom.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemDataCesiumAtom.java @@ -1,5 +1,6 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -8,6 +9,7 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.math.BigDecimal; /** *

@@ -98,6 +100,26 @@ @TableField("technical_index") private String technicalIndex; + public String getTechnicalIndex() { + if (!StringUtils.isEmpty(technicalIndex)) { + //将bigDecimal转为科学计数法,String.format转换方式,bigDecimal.toString()和bigDecimal.toPlainString()不生效 + if (technicalIndex.contains("±")) { + int scale = new BigDecimal(technicalIndex.replace("±", "")).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex.replace("±", ""))); + return "±" + format; + } + } else { + int scale = new BigDecimal(technicalIndex).scale(); + if (scale > 10) { + String format = String.format("%e", new BigDecimal(technicalIndex)); + return format; + } + } + } + return technicalIndex; + } + /** * 技术指标单位/输入灵敏度技术指标单位/上升时间技术指标单位 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/system/SystemSignServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/system/SystemSignServiceImpl.java index 7e90a09..ed31ca9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/system/SystemSignServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/system/SystemSignServiceImpl.java @@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** *

@@ -85,7 +86,8 @@ //签名/签章可使用人 List userIdList = request.getUserIdList(); userIdList.add(request.getSignUserId()); //添加签名本人 - List userRelationList = getUserRelations(userIdList, systemSign.getId()); + List distinctUserIdList = userIdList.stream().distinct().collect(Collectors.toList()); + List userRelationList = getUserRelations(distinctUserIdList, systemSign.getId()); boolean saveBatch = userRelationService.saveBatch(userRelationList); if(insertFlag > 0 && saveBatch){ return ReturnUtil.success();