20241223 更新

1.检材重量100以下保留两位 100以上保留一位,添加自定义序列化器去实现
master
陈江保 2 months ago
parent fb3fc4d14f
commit 42a7e57750
  1. 44
      src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java
  2. 3
      src/main/java/digital/laboratory/platform/entrustment/entity/EntrustmentIdentificationMaterial.java
  3. 30
      src/main/java/digital/laboratory/platform/entrustment/json/DynamicBigDecimalSerializer.java
  4. 2
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java
  5. 3
      src/main/java/digital/laboratory/platform/entrustment/vo/EntrustmentIdentificationMaterialVO.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<EntrustmentIdentificationMaterial>
* @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;

@ -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;
/**

@ -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<BigDecimal> {
@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)); // 输出为字符串
}
}

@ -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;

@ -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; // 检材性状

Loading…
Cancel
Save