diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java index 9106202..f27e5cd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java @@ -7,10 +7,7 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemConfigRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemDetailRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemGenerateDataRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemListRequest; +import com.casic.missiles.dto.business.deviceMeasure.*; import com.casic.missiles.dto.eqpt.EquipmentModelQueryForm; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemInfo; @@ -114,4 +111,10 @@ public ReturnDTO> generateData(@RequestBody @Valid MeasureItemGenerateDataRequest request) { return measureItemInfoService.generateData(request); } + + @ApiOperation("配置检定项-重新计算操作") + @PostMapping("/recalculate") + public ReturnDTO> recalculate(@RequestBody @Valid MeasureItemRecalculateRequest request) { + return measureItemInfoService.recalculate(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java index 9106202..f27e5cd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java @@ -7,10 +7,7 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemConfigRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemDetailRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemGenerateDataRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemListRequest; +import com.casic.missiles.dto.business.deviceMeasure.*; import com.casic.missiles.dto.eqpt.EquipmentModelQueryForm; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemInfo; @@ -114,4 +111,10 @@ public ReturnDTO> generateData(@RequestBody @Valid MeasureItemGenerateDataRequest request) { return measureItemInfoService.generateData(request); } + + @ApiOperation("配置检定项-重新计算操作") + @PostMapping("/recalculate") + public ReturnDTO> recalculate(@RequestBody @Valid MeasureItemRecalculateRequest request) { + return measureItemInfoService.recalculate(request); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java index 6cd254e..9903dfc 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java @@ -125,4 +125,42 @@ return itemDataPistonGauge; } + /** + * 重新计算 + * 一般压力表和电接点一般压力表准确度等级分量程90%上下限,需计算4个允许值(因为标准器示值变动可能影响准确度等级变更); + * 压力变送器和压力传感器需计算理论输出值 + */ + public static List pistonGaugeRecalculate(BizBusinessDeviceMeasureItemConfigPistonGauge itemConfig, List list, String itemCategoryName) { + BigDecimal rangeLower = new BigDecimal(itemConfig.getRangeLower()); + BigDecimal rangeUpper = new BigDecimal(itemConfig.getRangeUpper()); + BigDecimal range = rangeUpper.subtract(rangeLower); + list.forEach(itemData -> { + //一般压力表和电接点一般压力表需重新计算 + if (itemCategoryName.contains("一般压力表")) { + if (range.multiply(BigDecimal.valueOf(0.9)).compareTo(new BigDecimal(itemData.getIndicatingValue())) > 0) { + //量程上限90%及以下 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelLower()); + } else { + //量程上限90%及以上 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelUpper()); + } + //最大允许误差 + BigDecimal maximumErrorDecimal = itemData.getAccuracyClass().multiply(range).divide(BigDecimal.valueOf(100)).setScale(4, BigDecimal.ROUND_DOWN); + String maximumError = maximumErrorDecimal.toPlainString(); + itemData.setMaximumError("±" + maximumError); + //回程误差允许值 + itemData.setReturnError(maximumError); + //轻敲位移允许值 + itemData.setFrictionError(maximumErrorDecimal.multiply(BigDecimal.valueOf(0.5)).setScale(4, BigDecimal.ROUND_DOWN).toPlainString()); + //示值误差允许值 + itemData.setIndicatingError("±" + maximumError); + } else if(itemCategoryName.contains("压力变送器") || itemCategoryName.contains("压力传感器")) { + if (StringUtils.isNotEmpty(itemData.getIndicatingValue())) { + BigDecimal indicatingValueDecimal = new BigDecimal(itemData.getIndicatingValue()); + itemData.setTheoreticalOutputValue(BigDecimal.valueOf(16).divide(range).multiply(indicatingValueDecimal.subtract(rangeLower)).add(BigDecimal.valueOf(4))); + } + } + }); + return list; + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java index 9106202..f27e5cd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java @@ -7,10 +7,7 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemConfigRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemDetailRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemGenerateDataRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemListRequest; +import com.casic.missiles.dto.business.deviceMeasure.*; import com.casic.missiles.dto.eqpt.EquipmentModelQueryForm; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemInfo; @@ -114,4 +111,10 @@ public ReturnDTO> generateData(@RequestBody @Valid MeasureItemGenerateDataRequest request) { return measureItemInfoService.generateData(request); } + + @ApiOperation("配置检定项-重新计算操作") + @PostMapping("/recalculate") + public ReturnDTO> recalculate(@RequestBody @Valid MeasureItemRecalculateRequest request) { + return measureItemInfoService.recalculate(request); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java index 6cd254e..9903dfc 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java @@ -125,4 +125,42 @@ return itemDataPistonGauge; } + /** + * 重新计算 + * 一般压力表和电接点一般压力表准确度等级分量程90%上下限,需计算4个允许值(因为标准器示值变动可能影响准确度等级变更); + * 压力变送器和压力传感器需计算理论输出值 + */ + public static List pistonGaugeRecalculate(BizBusinessDeviceMeasureItemConfigPistonGauge itemConfig, List list, String itemCategoryName) { + BigDecimal rangeLower = new BigDecimal(itemConfig.getRangeLower()); + BigDecimal rangeUpper = new BigDecimal(itemConfig.getRangeUpper()); + BigDecimal range = rangeUpper.subtract(rangeLower); + list.forEach(itemData -> { + //一般压力表和电接点一般压力表需重新计算 + if (itemCategoryName.contains("一般压力表")) { + if (range.multiply(BigDecimal.valueOf(0.9)).compareTo(new BigDecimal(itemData.getIndicatingValue())) > 0) { + //量程上限90%及以下 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelLower()); + } else { + //量程上限90%及以上 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelUpper()); + } + //最大允许误差 + BigDecimal maximumErrorDecimal = itemData.getAccuracyClass().multiply(range).divide(BigDecimal.valueOf(100)).setScale(4, BigDecimal.ROUND_DOWN); + String maximumError = maximumErrorDecimal.toPlainString(); + itemData.setMaximumError("±" + maximumError); + //回程误差允许值 + itemData.setReturnError(maximumError); + //轻敲位移允许值 + itemData.setFrictionError(maximumErrorDecimal.multiply(BigDecimal.valueOf(0.5)).setScale(4, BigDecimal.ROUND_DOWN).toPlainString()); + //示值误差允许值 + itemData.setIndicatingError("±" + maximumError); + } else if(itemCategoryName.contains("压力变送器") || itemCategoryName.contains("压力传感器")) { + if (StringUtils.isNotEmpty(itemData.getIndicatingValue())) { + BigDecimal indicatingValueDecimal = new BigDecimal(itemData.getIndicatingValue()); + itemData.setTheoreticalOutputValue(BigDecimal.valueOf(16).divide(range).multiply(indicatingValueDecimal.subtract(rangeLower)).add(BigDecimal.valueOf(4))); + } + } + }); + return list; + } } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml index 6501e5b..42c5b56 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml @@ -17,7 +17,7 @@ - SELECT bei.equipment_no, bei.equipment_name, bei.manufacture_no, bei.model, bei.measure_valid_date + SELECT bei.id AS equipmentId, bei.equipment_no, bei.equipment_name, bei.manufacture_no, bei.model, bei.measure_valid_date FROM biz_business_device_measure_equipment bbdme JOIN biz_equipment_info bei ON bei.id = bbdme.equipment_id WHERE bbdme.data_id = #{dataId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java index 1bd506e..54d5ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java @@ -10,6 +10,9 @@ */ @Data public class MeasureEquipmentInfoDTO { + @ApiModelProperty(value = "设备id", dataType = "Long") + private Long equipmentId; + @ApiModelProperty(value = "设备编号", dataType = "String") private String equipmentNo; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java index 9106202..f27e5cd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java @@ -7,10 +7,7 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemConfigRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemDetailRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemGenerateDataRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemListRequest; +import com.casic.missiles.dto.business.deviceMeasure.*; import com.casic.missiles.dto.eqpt.EquipmentModelQueryForm; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemInfo; @@ -114,4 +111,10 @@ public ReturnDTO> generateData(@RequestBody @Valid MeasureItemGenerateDataRequest request) { return measureItemInfoService.generateData(request); } + + @ApiOperation("配置检定项-重新计算操作") + @PostMapping("/recalculate") + public ReturnDTO> recalculate(@RequestBody @Valid MeasureItemRecalculateRequest request) { + return measureItemInfoService.recalculate(request); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java index 6cd254e..9903dfc 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java @@ -125,4 +125,42 @@ return itemDataPistonGauge; } + /** + * 重新计算 + * 一般压力表和电接点一般压力表准确度等级分量程90%上下限,需计算4个允许值(因为标准器示值变动可能影响准确度等级变更); + * 压力变送器和压力传感器需计算理论输出值 + */ + public static List pistonGaugeRecalculate(BizBusinessDeviceMeasureItemConfigPistonGauge itemConfig, List list, String itemCategoryName) { + BigDecimal rangeLower = new BigDecimal(itemConfig.getRangeLower()); + BigDecimal rangeUpper = new BigDecimal(itemConfig.getRangeUpper()); + BigDecimal range = rangeUpper.subtract(rangeLower); + list.forEach(itemData -> { + //一般压力表和电接点一般压力表需重新计算 + if (itemCategoryName.contains("一般压力表")) { + if (range.multiply(BigDecimal.valueOf(0.9)).compareTo(new BigDecimal(itemData.getIndicatingValue())) > 0) { + //量程上限90%及以下 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelLower()); + } else { + //量程上限90%及以上 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelUpper()); + } + //最大允许误差 + BigDecimal maximumErrorDecimal = itemData.getAccuracyClass().multiply(range).divide(BigDecimal.valueOf(100)).setScale(4, BigDecimal.ROUND_DOWN); + String maximumError = maximumErrorDecimal.toPlainString(); + itemData.setMaximumError("±" + maximumError); + //回程误差允许值 + itemData.setReturnError(maximumError); + //轻敲位移允许值 + itemData.setFrictionError(maximumErrorDecimal.multiply(BigDecimal.valueOf(0.5)).setScale(4, BigDecimal.ROUND_DOWN).toPlainString()); + //示值误差允许值 + itemData.setIndicatingError("±" + maximumError); + } else if(itemCategoryName.contains("压力变送器") || itemCategoryName.contains("压力传感器")) { + if (StringUtils.isNotEmpty(itemData.getIndicatingValue())) { + BigDecimal indicatingValueDecimal = new BigDecimal(itemData.getIndicatingValue()); + itemData.setTheoreticalOutputValue(BigDecimal.valueOf(16).divide(range).multiply(indicatingValueDecimal.subtract(rangeLower)).add(BigDecimal.valueOf(4))); + } + } + }); + return list; + } } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml index 6501e5b..42c5b56 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml @@ -17,7 +17,7 @@ - SELECT bei.equipment_no, bei.equipment_name, bei.manufacture_no, bei.model, bei.measure_valid_date + SELECT bei.id AS equipmentId, bei.equipment_no, bei.equipment_name, bei.manufacture_no, bei.model, bei.measure_valid_date FROM biz_business_device_measure_equipment bbdme JOIN biz_equipment_info bei ON bei.id = bbdme.equipment_id WHERE bbdme.data_id = #{dataId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java index 1bd506e..54d5ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java @@ -10,6 +10,9 @@ */ @Data public class MeasureEquipmentInfoDTO { + @ApiModelProperty(value = "设备id", dataType = "Long") + private Long equipmentId; + @ApiModelProperty(value = "设备编号", dataType = "String") private String equipmentNo; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemConfigRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemConfigRequest.java index 9f64ec6..f3166fd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemConfigRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemConfigRequest.java @@ -1,5 +1,6 @@ package com.casic.missiles.dto.business.deviceMeasure; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemConfigPistonGauge; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemDataCalibrator; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemDataPistonGauge; import io.swagger.annotations.ApiModelProperty; @@ -28,6 +29,9 @@ @ApiModelProperty(value = "检定项备注", dataType = "String") private String itemRemark; + @ApiModelProperty(value = "0.02级活塞式压力计检定项配置", dataType = "Object") + private BizBusinessDeviceMeasureItemConfigPistonGauge measureItemConfigPistonGauge; + @ApiModelProperty(value = "检定项数据-多功能校准源", dataType = "List") private List measureItemDataCalibratorList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemRecalculateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemRecalculateRequest.java new file mode 100644 index 0000000..b8031d8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemRecalculateRequest.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.business.deviceMeasure; + +import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemConfigPistonGauge; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemDataPistonGauge; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/10/23 16:33 + */ +@Data +public class MeasureItemRecalculateRequest { + @NotEmpty(message = "所属检校标准装置不能为空") + @ApiModelProperty(value = "所属检校标准装置(字典code)", dataType = "String") + private String belongStandardEquipment; + + @NotEmpty(message = "设备检定项分类名字不能为空") + @ApiModelProperty(value = "设备检定项分类名字", dataType = "String") + private String itemCategoryName; + + @ApiModelProperty(value = "0.02活塞式压力计检定项生成数据配置") + private BizBusinessDeviceMeasureItemConfigPistonGauge measureItemConfigPistonGauge; + + @ApiModelProperty(value = "0.02活塞式压力计检定项数据列表") + private List measureItemDataPistonGaugeList; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java index 9106202..f27e5cd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java @@ -7,10 +7,7 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemConfigRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemDetailRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemGenerateDataRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemListRequest; +import com.casic.missiles.dto.business.deviceMeasure.*; import com.casic.missiles.dto.eqpt.EquipmentModelQueryForm; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemInfo; @@ -114,4 +111,10 @@ public ReturnDTO> generateData(@RequestBody @Valid MeasureItemGenerateDataRequest request) { return measureItemInfoService.generateData(request); } + + @ApiOperation("配置检定项-重新计算操作") + @PostMapping("/recalculate") + public ReturnDTO> recalculate(@RequestBody @Valid MeasureItemRecalculateRequest request) { + return measureItemInfoService.recalculate(request); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java index 6cd254e..9903dfc 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java @@ -125,4 +125,42 @@ return itemDataPistonGauge; } + /** + * 重新计算 + * 一般压力表和电接点一般压力表准确度等级分量程90%上下限,需计算4个允许值(因为标准器示值变动可能影响准确度等级变更); + * 压力变送器和压力传感器需计算理论输出值 + */ + public static List pistonGaugeRecalculate(BizBusinessDeviceMeasureItemConfigPistonGauge itemConfig, List list, String itemCategoryName) { + BigDecimal rangeLower = new BigDecimal(itemConfig.getRangeLower()); + BigDecimal rangeUpper = new BigDecimal(itemConfig.getRangeUpper()); + BigDecimal range = rangeUpper.subtract(rangeLower); + list.forEach(itemData -> { + //一般压力表和电接点一般压力表需重新计算 + if (itemCategoryName.contains("一般压力表")) { + if (range.multiply(BigDecimal.valueOf(0.9)).compareTo(new BigDecimal(itemData.getIndicatingValue())) > 0) { + //量程上限90%及以下 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelLower()); + } else { + //量程上限90%及以上 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelUpper()); + } + //最大允许误差 + BigDecimal maximumErrorDecimal = itemData.getAccuracyClass().multiply(range).divide(BigDecimal.valueOf(100)).setScale(4, BigDecimal.ROUND_DOWN); + String maximumError = maximumErrorDecimal.toPlainString(); + itemData.setMaximumError("±" + maximumError); + //回程误差允许值 + itemData.setReturnError(maximumError); + //轻敲位移允许值 + itemData.setFrictionError(maximumErrorDecimal.multiply(BigDecimal.valueOf(0.5)).setScale(4, BigDecimal.ROUND_DOWN).toPlainString()); + //示值误差允许值 + itemData.setIndicatingError("±" + maximumError); + } else if(itemCategoryName.contains("压力变送器") || itemCategoryName.contains("压力传感器")) { + if (StringUtils.isNotEmpty(itemData.getIndicatingValue())) { + BigDecimal indicatingValueDecimal = new BigDecimal(itemData.getIndicatingValue()); + itemData.setTheoreticalOutputValue(BigDecimal.valueOf(16).divide(range).multiply(indicatingValueDecimal.subtract(rangeLower)).add(BigDecimal.valueOf(4))); + } + } + }); + return list; + } } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml index 6501e5b..42c5b56 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml @@ -17,7 +17,7 @@ - SELECT bei.equipment_no, bei.equipment_name, bei.manufacture_no, bei.model, bei.measure_valid_date + SELECT bei.id AS equipmentId, bei.equipment_no, bei.equipment_name, bei.manufacture_no, bei.model, bei.measure_valid_date FROM biz_business_device_measure_equipment bbdme JOIN biz_equipment_info bei ON bei.id = bbdme.equipment_id WHERE bbdme.data_id = #{dataId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java index 1bd506e..54d5ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureEquipmentInfoDTO.java @@ -10,6 +10,9 @@ */ @Data public class MeasureEquipmentInfoDTO { + @ApiModelProperty(value = "设备id", dataType = "Long") + private Long equipmentId; + @ApiModelProperty(value = "设备编号", dataType = "String") private String equipmentNo; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemConfigRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemConfigRequest.java index 9f64ec6..f3166fd 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemConfigRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemConfigRequest.java @@ -1,5 +1,6 @@ package com.casic.missiles.dto.business.deviceMeasure; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemConfigPistonGauge; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemDataCalibrator; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemDataPistonGauge; import io.swagger.annotations.ApiModelProperty; @@ -28,6 +29,9 @@ @ApiModelProperty(value = "检定项备注", dataType = "String") private String itemRemark; + @ApiModelProperty(value = "0.02级活塞式压力计检定项配置", dataType = "Object") + private BizBusinessDeviceMeasureItemConfigPistonGauge measureItemConfigPistonGauge; + @ApiModelProperty(value = "检定项数据-多功能校准源", dataType = "List") private List measureItemDataCalibratorList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemRecalculateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemRecalculateRequest.java new file mode 100644 index 0000000..b8031d8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/deviceMeasure/MeasureItemRecalculateRequest.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.business.deviceMeasure; + +import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemConfigPistonGauge; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemDataPistonGauge; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/10/23 16:33 + */ +@Data +public class MeasureItemRecalculateRequest { + @NotEmpty(message = "所属检校标准装置不能为空") + @ApiModelProperty(value = "所属检校标准装置(字典code)", dataType = "String") + private String belongStandardEquipment; + + @NotEmpty(message = "设备检定项分类名字不能为空") + @ApiModelProperty(value = "设备检定项分类名字", dataType = "String") + private String itemCategoryName; + + @ApiModelProperty(value = "0.02活塞式压力计检定项生成数据配置") + private BizBusinessDeviceMeasureItemConfigPistonGauge measureItemConfigPistonGauge; + + @ApiModelProperty(value = "0.02活塞式压力计检定项数据列表") + private List measureItemDataPistonGaugeList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemInfo.java index 03593ba..d2a12a9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureItemInfo.java @@ -218,6 +218,10 @@ @TableField(exist = false) private List measureItemDataCalibratorList; + + @ApiModelProperty(value = "检定项配置-0.02级活塞式压力计(详情返回参数)", dataType = "Object") + private BizBusinessDeviceMeasureItemConfigPistonGauge measureItemConfigPistonGauge; + @ApiModelProperty(value = "检定项数据-0.02级活塞式压力计标准装置(详情返回参数)", dataType = "List") @TableField(exist = false) private List measureItemDataPistonGaugeList; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureItemInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureItemInfoServiceImpl.java index acf4635..63d4fb7 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureItemInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureItemInfoServiceImpl.java @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemConfigRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemDetailRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemGenerateDataRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemListRequest; +import com.casic.missiles.dto.business.deviceMeasure.*; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureItemInfoMapper; @@ -19,6 +16,7 @@ import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemDataPistonGauge; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemInfo; import com.casic.missiles.model.eqpt.EquipmentModelTechnicalTarget; +import com.casic.missiles.service.business.IBizBusinessDeviceMeasureItemConfigPistonGaugeService; import com.casic.missiles.service.business.IBizBusinessDeviceMeasureItemDataCalibratorService; import com.casic.missiles.service.business.IBizBusinessDeviceMeasureItemDataPistonGaugeService; import com.casic.missiles.service.business.IBizBusinessDeviceMeasureItemInfoService; @@ -52,6 +50,8 @@ private EquipmentModelTechnicalTargetMapper modelTechnicalTargetMapper; @Autowired private IBizBusinessDeviceMeasureItemDataPistonGaugeService measureItemDataPistonGaugeService; + @Autowired + private IBizBusinessDeviceMeasureItemConfigPistonGaugeService measureItemConfigPistonGaugeService; @Override public Page listPage(Page page, MeasureItemListRequest request) throws Exception { @@ -110,8 +110,10 @@ if (this.baseMapper.updateById(measureItemInfo) < 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } - //更新检定项配置表 - + //更新检定项配置表,先删除后新增 + if (!updateItemConfigHandle(configRequest)) { + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } //更新检定项数据表,先删除后新增 ReturnDTO success = updateItemDataHandle(configRequest); @@ -173,6 +175,20 @@ return null; } + private boolean updateItemConfigHandle(MeasureItemConfigRequest configRequest) { + BizBusinessDeviceMeasureItemConfigPistonGauge measureItemConfigPistonGauge = configRequest.getMeasureItemConfigPistonGauge(); + if (Objects.nonNull(measureItemConfigPistonGauge)) { + //0.02级活塞式压力计标准装置 + Long id = measureItemConfigPistonGauge.getId(); + if(Objects.nonNull(id)){ + measureItemConfigPistonGaugeService.removeById(id); + } + return measureItemConfigPistonGaugeService.save(measureItemConfigPistonGauge); + } + + return true; + } + @Override public ReturnDTO detail(MeasureItemDetailRequest request) throws Exception { BizBusinessDeviceMeasureItemInfo measureItemInfo = this.baseMapper.selectDetailById(request.getId()); @@ -180,10 +196,52 @@ QueryWrapper technicalTargetWrapper = new QueryWrapper<>(); technicalTargetWrapper.eq("model_id", measureItemInfo.getDeviceModelId()); measureItemInfo.setTechnicalTargetList(modelTechnicalTargetMapper.selectList(technicalTargetWrapper)); + //查询检定项配置 + queryItemConfigHandle(measureItemInfo, request); + + //查询检定项数据 queryItemDataHandle(measureItemInfo, request); return ReturnUtil.success(measureItemInfo); } + private void queryItemConfigHandle(BizBusinessDeviceMeasureItemInfo measureItemInfo, MeasureItemDetailRequest request) { + switch (request.getBelongStandardEquipment()) { + case CALIBRATOR: + return; + case DC_POWER_SUPPLY: + return; + case RESISTANCE_THERMOMETER: + return; + case PISTON_GAUGE: + QueryWrapper pistonGaugeWrapper = new QueryWrapper<>(); + pistonGaugeWrapper.eq("item_id", request.getId()); + measureItemInfo.setMeasureItemConfigPistonGauge(measureItemConfigPistonGaugeService.getOne(pistonGaugeWrapper)); + return; + case SPECTRUM_ANALYZER: + return; + case SIGNAL_GENERATOR: + return; + case MICROWAVE_ATTENUATION: + return; + case FREQUENCY_STABILITY: + return; + case OSCILLOSCOPE: + return; + case TIME_FREQUENCY: + return; + case LOW_POWER: + return; + case LOW_FREQUENCY_SIGNAL_GENERATOR: + return; + case VECTOR_NETWORK_ANALYZER: + return; + case DEGREE_OF_DISTORTION: + return; + default: + return; + } + } + private void queryItemDataHandle(BizBusinessDeviceMeasureItemInfo measureItemInfo, MeasureItemDetailRequest request) { switch (request.getBelongStandardEquipment()) { //有部分套标准装置的不同检定项分类对应的表头合成不到一张表中的话,还要再belongStandardEquipment下再根据检定项分类进行存储到不同表 @@ -295,4 +353,51 @@ } + @Override + public ReturnDTO> recalculate(MeasureItemRecalculateRequest request) { + String belongStandardEquipment = request.getBelongStandardEquipment(); + String itemCategoryName = request.getItemCategoryName(); + + switch (belongStandardEquipment) { + case CALIBRATOR: + //多功能校准源标准装置无重新计算 + return ReturnUtil.success(); + case DC_POWER_SUPPLY: + return null; + case RESISTANCE_THERMOMETER: + return null; + case PISTON_GAUGE: + List list = request.getMeasureItemDataPistonGaugeList(); + BizBusinessDeviceMeasureItemConfigPistonGauge itemConfig = request.getMeasureItemConfigPistonGauge(); + if (CollectionUtils.isEmpty(list) || Objects.isNull(itemConfig)) { + return ReturnUtil.success(new ArrayList<>()); + } + list = FormulaCalculateUtil.pistonGaugeRecalculate(itemConfig, list, itemCategoryName); + return ReturnUtil.success(list); + case SPECTRUM_ANALYZER: + return null; + case SIGNAL_GENERATOR: + return null; + case MICROWAVE_ATTENUATION: + return null; + case FREQUENCY_STABILITY: + return null; + case OSCILLOSCOPE: + return null; + case TIME_FREQUENCY: + return null; + case LOW_POWER: + return null; + case LOW_FREQUENCY_SIGNAL_GENERATOR: + return null; + case VECTOR_NETWORK_ANALYZER: + return null; + case DEGREE_OF_DISTORTION: + return null; + default: + return ReturnUtil.success(); + } + + } + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java index 9106202..f27e5cd 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureItemInfoController.java @@ -7,10 +7,7 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemConfigRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemDetailRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemGenerateDataRequest; -import com.casic.missiles.dto.business.deviceMeasure.MeasureItemListRequest; +import com.casic.missiles.dto.business.deviceMeasure.*; import com.casic.missiles.dto.eqpt.EquipmentModelQueryForm; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.model.business.BizBusinessDeviceMeasureItemInfo; @@ -114,4 +111,10 @@ public ReturnDTO> generateData(@RequestBody @Valid MeasureItemGenerateDataRequest request) { return measureItemInfoService.generateData(request); } + + @ApiOperation("配置检定项-重新计算操作") + @PostMapping("/recalculate") + public ReturnDTO> recalculate(@RequestBody @Valid MeasureItemRecalculateRequest request) { + return measureItemInfoService.recalculate(request); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java index 6cd254e..9903dfc 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/FormulaCalculateUtil.java @@ -125,4 +125,42 @@ return itemDataPistonGauge; } + /** + * 重新计算 + * 一般压力表和电接点一般压力表准确度等级分量程90%上下限,需计算4个允许值(因为标准器示值变动可能影响准确度等级变更); + * 压力变送器和压力传感器需计算理论输出值 + */ + public static List pistonGaugeRecalculate(BizBusinessDeviceMeasureItemConfigPistonGauge itemConfig, List list, String itemCategoryName) { + BigDecimal rangeLower = new BigDecimal(itemConfig.getRangeLower()); + BigDecimal rangeUpper = new BigDecimal(itemConfig.getRangeUpper()); + BigDecimal range = rangeUpper.subtract(rangeLower); + list.forEach(itemData -> { + //一般压力表和电接点一般压力表需重新计算 + if (itemCategoryName.contains("一般压力表")) { + if (range.multiply(BigDecimal.valueOf(0.9)).compareTo(new BigDecimal(itemData.getIndicatingValue())) > 0) { + //量程上限90%及以下 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelLower()); + } else { + //量程上限90%及以上 + itemData.setAccuracyClass(itemConfig.getAccuracyLevelUpper()); + } + //最大允许误差 + BigDecimal maximumErrorDecimal = itemData.getAccuracyClass().multiply(range).divide(BigDecimal.valueOf(100)).setScale(4, BigDecimal.ROUND_DOWN); + String maximumError = maximumErrorDecimal.toPlainString(); + itemData.setMaximumError("±" + maximumError); + //回程误差允许值 + itemData.setReturnError(maximumError); + //轻敲位移允许值 + itemData.setFrictionError(maximumErrorDecimal.multiply(BigDecimal.valueOf(0.5)).setScale(4, BigDecimal.ROUND_DOWN).toPlainString()); + //示值误差允许值 + itemData.setIndicatingError("±" + maximumError); + } else if(itemCategoryName.contains("压力变送器") || itemCategoryName.contains("压力传感器")) { + if (StringUtils.isNotEmpty(itemData.getIndicatingValue())) { + BigDecimal indicatingValueDecimal = new BigDecimal(itemData.getIndicatingValue()); + itemData.setTheoreticalOutputValue(BigDecimal.valueOf(16).divide(range).multiply(indicatingValueDecimal.subtract(rangeLower)).add(BigDecimal.valueOf(4))); + } + } + }); + return list; + } } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml index 6501e5b..42c5b56 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BizBusinessDeviceMeasureEquipmentMapper.xml @@ -17,7 +17,7 @@