diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/AcceptServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/AcceptServiceImpl.java index a52cf0b..60a1940 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/AcceptServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/AcceptServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import digital.laboratory.platform.common.core.exception.ValidateCodeException; 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.service.AcceptService; import digital.laboratory.platform.entrustment.service.EntrustmentIdentificationMaterialService; import digital.laboratory.platform.entrustment.service.EntrustmentService; @@ -38,6 +39,13 @@ public class AcceptServiceImpl implements AcceptService { if (identificationMaterial == null) { throw new ValidateCodeException("检材信息不存在!"); } + Entrustment entrustment = entrustmentService.getById(identificationMaterial.getEntrustmentId()); + if (entrustment == null) { + throw new ValidateCodeException("检材对应的委托信息不存在!"); + } + if (entrustment.getStatus().compareTo(EntrustmentStatusConstants.ENTRUSTMENT_STATUS_ACCEPTED.getStatus()) >= 0) { + throw new ValidateCodeException("该检材对应的委托信息已经受理完成,不能修改!"); + } // 获取要修改的检材受理编号 String materialAcceptNo = material.getAcceptNo(); if (StrUtil.isBlank(materialAcceptNo)) { @@ -76,7 +84,6 @@ public class AcceptServiceImpl implements AcceptService { } count++; entrustmentIdentificationMaterial.setAcceptNo(entrustAcceptNo - + "-" + entrustmentIdentificationMaterialAcceptNo.substring(entrustmentIdentificationMaterialAcceptNo.lastIndexOf("-"))); } return count == 0 ? true : entrustmentIdentificationMaterialService.updateBatchById(materialList); diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java index 989497d..9c68f88 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java @@ -669,38 +669,66 @@ public class EntrustmentServiceImpl extends ServiceImpl getMaterialBookVoList(List materialList) { List materialListForBookVoList = new ArrayList<>(); materialList.forEach(item -> { - MaterialListForBookVo eg = new MaterialListForBookVo(); - eg.setAcceptNo(item.getAcceptNo()); - eg.setIndexNo(item.getShortNameDes() + "检材"); - eg.setMaterialName(item.getName()); - eg.setFormName(StringUtils.isNotBlank(item.getColor()) ? item.getColor() + item.getFormName() : "" + item.getFormName()); - eg.setSpecies(item.getTypeName()); - eg.setPackComplete(item.getPackComplete()); - eg.setDrugsValue(item.getDrugsValue()); - eg.setRtSampleQuantity(item.getRtSampleQuantity()); - eg.setRemark(item.getRemark()); - eg.setOrderNo(item.getOrderNo()); - BigDecimal totalSampleMass; - //因为现在有的检材可以不用复称,例如送来的一支电子烟,所以我们用送检的数量与单位进行描述即可 - if (item.getSample1RepeatWeigh() == null || item.getSample1RepeatWeigh().compareTo(BigDecimal.ZERO) == 0) { - eg.setAnalysisSampleDes(item.getSample1Quantity() + item.getUnit()); - totalSampleMass = item.getSample1Quantity(); - if (item.getSample2Present()) { - eg.setRetainedSampleDes(item.getSample2Quantity() + item.getUnit()); - totalSampleMass.add(item.getSample2Quantity()); - } else { - eg.setRetainedSampleDes(new BigDecimal(0) + item.getUnit()); - } - eg.setTotalSampleDes(totalSampleMass.setScale(2, BigDecimal.ROUND_HALF_UP) + item.getUnit()); - } else { - eg.setAnalysisSampleDes(item.getSample1RepeatWeigh() + item.getUnit()); - eg.setRetainedSampleDes(item.getSample2RepeatWeigh() + item.getUnit()); - eg.setTotalSampleDes((item.getSample1RepeatWeigh() == null ? new BigDecimal(0) : item.getSample1RepeatWeigh()).add(item.getSample2RepeatWeigh() == null ? new BigDecimal(0) : item.getSample2RepeatWeigh()).setScale(2, BigDecimal.ROUND_HALF_UP) + "克"); - } + MaterialListForBookVo eg = getMaterialListForBookVo(item); materialListForBookVoList.add(eg); }); return materialListForBookVoList; } + + private MaterialListForBookVo getMaterialListForBookVo(EntrustmentIdentificationMaterial item) { + MaterialListForBookVo eg = new MaterialListForBookVo(); + eg.setAcceptNo(item.getAcceptNo()); + eg.setIndexNo(item.getShortNameDes() + "检材"); + eg.setMaterialName(item.getName()); + eg.setFormName(StringUtils.isNotBlank(item.getColor()) ? item.getColor() + item.getFormName() : "" + item.getFormName()); + eg.setSpecies(item.getTypeName()); + eg.setPackComplete(item.getPackComplete()); + eg.setDrugsValue(item.getDrugsValue()); + eg.setRtSampleQuantity(item.getRtSampleQuantity()); + eg.setRemark(item.getRemark()); + eg.setOrderNo(item.getOrderNo()); + BigDecimal totalSampleMass = calculateTotalSampleMass(item, eg); + + // 根据 totalSampleMass 大小来决定保留的小数位数 + if (totalSampleMass.compareTo(new BigDecimal(100)) >= 0) { + // 如果 totalSampleMass 大于 100,保留 1 位小数 + eg.setTotalSampleDes(totalSampleMass.setScale(1, BigDecimal.ROUND_HALF_UP) + item.getUnit()); + } else { + // 否则保留 2 位小数 + eg.setTotalSampleDes(totalSampleMass.setScale(2, BigDecimal.ROUND_HALF_UP) + item.getUnit()); + } + return eg; + } + + private BigDecimal calculateTotalSampleMass(EntrustmentIdentificationMaterial item, MaterialListForBookVo eg) { + BigDecimal totalSampleMass = BigDecimal.ZERO; + //因为现在有的检材可以不用复称,例如送来的一支电子烟,所以我们用送检的数量与单位进行描述即可 + if (item.getSample1RepeatWeigh() == null || item.getSample1RepeatWeigh().compareTo(BigDecimal.ZERO) == 0) { + eg.setAnalysisSampleDes(item.getSample1Quantity() + item.getUnit()); + totalSampleMass = item.getSample1Quantity(); + if (item.getSample2Present()) { + eg.setRetainedSampleDes(item.getSample2Quantity() + item.getUnit()); + totalSampleMass.add(item.getSample2Quantity()); + } else { + eg.setRetainedSampleDes(new BigDecimal(0) + item.getUnit()); + } +// eg.setTotalSampleDes(totalSampleMass.setScale(2, BigDecimal.ROUND_HALF_UP) + item.getUnit()); + } else { + eg.setAnalysisSampleDes(item.getSample1RepeatWeigh() + item.getUnit()); + eg.setRetainedSampleDes(item.getSample2RepeatWeigh() + item.getUnit()); +// eg.setTotalSampleDes( +// (item.getSample1RepeatWeigh() == null ? new BigDecimal(0) : item.getSample1RepeatWeigh()) +// .add( +// item.getSample2RepeatWeigh() == null ? new BigDecimal(0) : item.getSample2RepeatWeigh() +// ) +// .setScale(2, BigDecimal.ROUND_HALF_UP) +// + "克" +// ); + totalSampleMass = (item.getSample1RepeatWeigh() == null ? BigDecimal.ZERO : item.getSample1RepeatWeigh()) + .add(item.getSample2RepeatWeigh() == null ? BigDecimal.ZERO : item.getSample2RepeatWeigh()); + } + return totalSampleMass; + } //构造鉴定委托书文书中的检材列表 //检材处置方式 @@ -2153,7 +2181,16 @@ public class EntrustmentServiceImpl extends ServiceImpl= 0) { + entrustmentIdentificationMaterial.setQuantity(quantity.setScale(1, BigDecimal.ROUND_HALF_UP)); + } else { + entrustmentIdentificationMaterial.setQuantity(quantity.setScale(2, BigDecimal.ROUND_HALF_UP)); + } + } dm.put("materialList", materialList); // QR Code // BufferedImage bufferedImage = QRCodeUtils.genQRCode(ev.getEntrustmentNo(), 100, 100);