diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java index aa3a4c6d..e6c26449 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java @@ -1144,7 +1144,12 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp chargeItem.setQuantityValue(adviceSaveDto.getQuantity()); // 数量 chargeItem.setQuantityUnit(adviceSaveDto.getUnitCode()); // 单位 - chargeItem.setUnitPrice(adviceSaveDto.getUnitPrice()); // 单价 + // #415 价格非负验证 + BigDecimal unitPrice = adviceSaveDto.getUnitPrice(); + if (unitPrice != null && unitPrice.compareTo(BigDecimal.ZERO) < 0) { + unitPrice = unitPrice.abs(); // 负数取绝对值 + } + chargeItem.setUnitPrice(unitPrice); // 单价 chargeItem.setTotalPrice(adviceSaveDto.getTotalPrice()); // 总价 // 显式设置tenantId、createBy和createTime字段,防止自动填充机制失效 @@ -1616,7 +1621,12 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp chargeItem.setQuantityValue(adviceSaveDto.getQuantity()); // 数量 chargeItem.setQuantityUnit(adviceSaveDto.getUnitCode()); // 单位 - chargeItem.setUnitPrice(adviceSaveDto.getUnitPrice()); // 单价 + // #415 价格非负验证 + BigDecimal unitPrice = adviceSaveDto.getUnitPrice(); + if (unitPrice != null && unitPrice.compareTo(BigDecimal.ZERO) < 0) { + unitPrice = unitPrice.abs(); // 负数取绝对值 + } + chargeItem.setUnitPrice(unitPrice); // 单价 chargeItem.setTotalPrice(adviceSaveDto.getTotalPrice()); // 总价 // 显式设置审计字段,防止自动填充机制失效 @@ -1842,7 +1852,12 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp chargeItem.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id chargeItem.setQuantityValue(adviceSaveDto.getQuantity()); // 数量 chargeItem.setQuantityUnit(adviceSaveDto.getUnitCode()); // 单位 - chargeItem.setUnitPrice(adviceSaveDto.getUnitPrice()); // 单价 + // #415 价格非负验证 + BigDecimal unitPrice = adviceSaveDto.getUnitPrice(); + if (unitPrice != null && unitPrice.compareTo(BigDecimal.ZERO) < 0) { + unitPrice = unitPrice.abs(); // 负数取绝对值 + } + chargeItem.setUnitPrice(unitPrice); // 单价 chargeItem.setTotalPrice(adviceSaveDto.getTotalPrice()); // 总价 iChargeItemService.saveOrUpdate(chargeItem); diff --git a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/applicationForm/bloodTransfusion.vue b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/applicationForm/bloodTransfusion.vue index a5d21864..b5950993 100644 --- a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/applicationForm/bloodTransfusion.vue +++ b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/applicationForm/bloodTransfusion.vue @@ -80,11 +80,23 @@