From 42a7e577507705c7acc2132584b7da3bb80a4b69 Mon Sep 17 00:00:00 2001 From: chen <2710907404@qq.com> Date: Mon, 23 Dec 2024 14:38:16 +0800 Subject: [PATCH] =?UTF-8?q?20241223=20=E6=9B=B4=E6=96=B0=201.=E6=A3=80?= =?UTF-8?q?=E6=9D=90=E9=87=8D=E9=87=8F100=E4=BB=A5=E4=B8=8B=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E4=B8=A4=E4=BD=8D=20100=E4=BB=A5=E4=B8=8A=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E4=B8=80=E4=BD=8D=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=BA=8F=E5=88=97=E5=8C=96=E5=99=A8=E5=8E=BB?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tmentIdentificationMaterialController.java | 44 ++++++++++++++----- .../EntrustmentIdentificationMaterial.java | 3 ++ .../json/DynamicBigDecimalSerializer.java | 30 +++++++++++++ ...mentIdentificationMaterialServiceImpl.java | 2 +- .../EntrustmentIdentificationMaterialVO.java | 3 -- 5 files changed, 66 insertions(+), 16 deletions(-) create mode 100644 src/main/java/digital/laboratory/platform/entrustment/json/DynamicBigDecimalSerializer.java diff --git a/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java b/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java index 2ef3d8d..f07db78 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java +++ b/src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java @@ -22,18 +22,23 @@ import digital.laboratory.platform.common.mybatis.security.service.DLPUser; import digital.laboratory.platform.common.oss.service.OssFile; import digital.laboratory.platform.entrustment.dto.PrintDTO; import digital.laboratory.platform.entrustment.dto.SampleBoxDTO; -import digital.laboratory.platform.entrustment.entity.*; +import digital.laboratory.platform.entrustment.entity.CaseEvent; +import digital.laboratory.platform.entrustment.entity.CaseEvidence; +import digital.laboratory.platform.entrustment.entity.Entrustment; +import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial; import digital.laboratory.platform.entrustment.enums.EntrustmentStatusConstants; import digital.laboratory.platform.entrustment.handler.AppStartupRunner; -import digital.laboratory.platform.entrustment.service.*; -import digital.laboratory.platform.sys.feign.RemoteEquipmentService; -import io.seata.spring.annotation.GlobalTransactional; +import digital.laboratory.platform.entrustment.service.CaseEventService; +import digital.laboratory.platform.entrustment.service.CaseEvidenceService; +import digital.laboratory.platform.entrustment.service.EntrustmentIdentificationMaterialService; +import digital.laboratory.platform.entrustment.service.EntrustmentService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.oauth2.provider.OAuth2Authentication; import org.springframework.web.bind.annotation.*; @@ -44,9 +49,13 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.math.BigDecimal; import java.security.Principal; import java.time.LocalDateTime; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** @@ -63,16 +72,16 @@ import java.util.*; public class EntrustmentIdentificationMaterialController { private final CaseEventService caseEventService; + private final EntrustmentService entrustmentService; + private final EntrustmentIdentificationMaterialService entrustmentIdentificationMaterialService; - private final SampleService sampleService; + private final CaseEvidenceService caseEvidenceService; + private final OssFile ossFile; - private final SampleBoxService sampleBoxService; - private final TakerService takerService; private final RemoteTemplate2htmlService remoteTemplate2htmlService; - private final RemoteEquipmentService remoteEquipmentService; /** * 通过id查询检材信息 @@ -157,6 +166,17 @@ public class EntrustmentIdentificationMaterialController { .in(entrustmentIds != null && entrustmentIds.size() > 0, "entrustment_id", entrustmentIds) .orderByAsc("order_no") ); + // 处理返回给前端的重量值 + list.forEach(entity -> { + BigDecimal quantity = entity.getQuantity(); + if (quantity.compareTo(new BigDecimal(100)) >= 0) { + // 如果 totalSampleMass 大于 100,保留 1 位小数 + entity.setQuantity(quantity.setScale(1, BigDecimal.ROUND_HALF_UP)); + } else { + // 否则保留 2 位小数 + entity.setQuantity(quantity.setScale(2, BigDecimal.ROUND_HALF_UP)); + } + }); return R.ok(list); } @@ -210,7 +230,7 @@ public class EntrustmentIdentificationMaterialController { * sample2Quantity * sample2BoxId * - * @param List + * @param materialList * @return */ @@ -506,7 +526,7 @@ public class EntrustmentIdentificationMaterialController { //去掉头信息 String imgBase64 = image.substring(image.indexOf(",") + 1); - byte[] decoded = org.apache.commons.codec.binary.Base64.decodeBase64(imgBase64); + byte[] decoded = Base64.decodeBase64(imgBase64); InputStream is = new ByteArrayInputStream(decoded); String path = OSSDirectoryConstants.ENTRUSTMENT_DIRECTORY + "/" + im.getEntrustmentId() + "/" + identificationMaterialId; @@ -709,7 +729,7 @@ public class EntrustmentIdentificationMaterialController { //去掉头信息 String imgBase64 = image.substring(image.indexOf(",") + 1); - byte[] decoded = org.apache.commons.codec.binary.Base64.decodeBase64(imgBase64); + byte[] decoded = Base64.decodeBase64(imgBase64); InputStream is = new ByteArrayInputStream(decoded); String path = OSSDirectoryConstants.ACCEPT_DIRECTORY + "/" + im.getEntrustmentId() + "/" + identificationMaterialId; diff --git a/src/main/java/digital/laboratory/platform/entrustment/entity/EntrustmentIdentificationMaterial.java b/src/main/java/digital/laboratory/platform/entrustment/entity/EntrustmentIdentificationMaterial.java index cebe73f..28a7e6f 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/entity/EntrustmentIdentificationMaterial.java +++ b/src/main/java/digital/laboratory/platform/entrustment/entity/EntrustmentIdentificationMaterial.java @@ -3,6 +3,8 @@ package digital.laboratory.platform.entrustment.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; //import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import digital.laboratory.platform.entrustment.json.DynamicBigDecimalSerializer; import digital.laboratory.platform.sys.entity.DrugLite; import digital.laboratory.platform.common.mybatis.base.BaseEntity; import digital.laboratory.platform.sys.entity.entrustment.IMAdditionalProperty; @@ -128,6 +130,7 @@ public class EntrustmentIdentificationMaterial extends BaseEntity { * 检材数量, 例如 3.8 克 或 4.5毫升 */ @ApiModelProperty(value = "检材数量, 例如 3.8 克 或 4.5毫升") + @JsonSerialize(using = DynamicBigDecimalSerializer.class) private BigDecimal quantity; /** diff --git a/src/main/java/digital/laboratory/platform/entrustment/json/DynamicBigDecimalSerializer.java b/src/main/java/digital/laboratory/platform/entrustment/json/DynamicBigDecimalSerializer.java new file mode 100644 index 0000000..8657198 --- /dev/null +++ b/src/main/java/digital/laboratory/platform/entrustment/json/DynamicBigDecimalSerializer.java @@ -0,0 +1,30 @@ +package digital.laboratory.platform.entrustment.json; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.math.BigDecimal; +import java.text.DecimalFormat; + +/** + * BigDecimal 自定义序列化器 + */ +public class DynamicBigDecimalSerializer extends JsonSerializer { + + @Override + public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + // 判断是否大于100,动态控制小数位数 + int scale = value.compareTo(new BigDecimal("100")) > 0 ? 1 : 2; + value = value.setScale(scale, BigDecimal.ROUND_HALF_UP); + + // 使用 DecimalFormat 保留小数位并输出 + DecimalFormat df = new DecimalFormat(); + df.setMinimumFractionDigits(scale); // 最小小数位数 + df.setMaximumFractionDigits(scale); // 最大小数位数 + df.setGroupingUsed(false); // 不使用千分位 + + gen.writeString(df.format(value)); // 输出为字符串 + } +} diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java index 4bbc78a..fc63155 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java @@ -29,10 +29,10 @@ import digital.laboratory.platform.entrustment.enums.EntrustmentStatusConstants; import digital.laboratory.platform.entrustment.handler.AppStartupRunner; import digital.laboratory.platform.entrustment.mapper.EntrustmentIdentificationMaterialMapper; import digital.laboratory.platform.entrustment.mapper.EntrustmentMapper; -import digital.laboratory.platform.othersys.utils.ConvertUtils; import digital.laboratory.platform.entrustment.service.*; import digital.laboratory.platform.entrustment.vo.EntrustmentIdentificationMaterialVO; import digital.laboratory.platform.entrustment.vo.SampleBoxVO; +import digital.laboratory.platform.othersys.utils.ConvertUtils; import digital.laboratory.platform.sys.entity.BalanceUseRecord; import digital.laboratory.platform.sys.entity.DrugLite; import digital.laboratory.platform.sys.entity.SysUser; diff --git a/src/main/java/digital/laboratory/platform/entrustment/vo/EntrustmentIdentificationMaterialVO.java b/src/main/java/digital/laboratory/platform/entrustment/vo/EntrustmentIdentificationMaterialVO.java index c54c33b..040356d 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/vo/EntrustmentIdentificationMaterialVO.java +++ b/src/main/java/digital/laboratory/platform/entrustment/vo/EntrustmentIdentificationMaterialVO.java @@ -1,11 +1,8 @@ package digital.laboratory.platform.entrustment.vo; -import digital.laboratory.platform.entrustment.entity.Entrustment; import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial; import lombok.Data; -import java.util.List; - @Data public class EntrustmentIdentificationMaterialVO extends EntrustmentIdentificationMaterial { String formName; // 检材性状