支持批量受理

master
杨海航 4 months ago
parent 24127de396
commit d233fc45d7
  1. 4
      src/main/java/digital/laboratory/platform/entrustment/controller/EntrustmentIdentificationMaterialController.java
  2. 2
      src/main/java/digital/laboratory/platform/entrustment/service/EntrustmentIdentificationMaterialService.java
  3. 43
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java
  4. 2
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java

@ -297,10 +297,10 @@ public class EntrustmentIdentificationMaterialController {
@SysLog("受理人对检材进行受理") @SysLog("受理人对检材进行受理")
@PutMapping("/accept_apply") @PutMapping("/accept_apply")
@PreAuthorize("@pms.hasPermission('EntrustmentAccept')") @PreAuthorize("@pms.hasPermission('EntrustmentAccept')")
public R<EntrustmentIdentificationMaterial> bizAccept_Apply(@RequestBody EntrustmentIdentificationMaterial identificationMaterial, Integer opCode, HttpServletRequest theHttpServletRequest) { public R bizAccept_Apply(@RequestBody List<EntrustmentIdentificationMaterial> identificationMaterialList, Integer opCode, HttpServletRequest theHttpServletRequest) {
Principal principal = theHttpServletRequest.getUserPrincipal(); Principal principal = theHttpServletRequest.getUserPrincipal();
DLPUser dlpUser = (DLPUser) ((OAuth2Authentication) principal).getUserAuthentication().getPrincipal(); DLPUser dlpUser = (DLPUser) ((OAuth2Authentication) principal).getUserAuthentication().getPrincipal();
return R.ok(entrustmentIdentificationMaterialService.bizAccept_Apply(identificationMaterial, opCode, dlpUser), "检材受理完成"); return R.ok(entrustmentIdentificationMaterialService.bizAccept_Apply_Batch(identificationMaterialList, opCode, dlpUser), "检材受理完成");
} }

@ -83,7 +83,7 @@ public interface EntrustmentIdentificationMaterialService extends IService<Entru
List<EntrustmentIdentificationMaterial> bizAccept_Save(List<EntrustmentIdentificationMaterial> materialList, DLPUser dlpUser); List<EntrustmentIdentificationMaterial> bizAccept_Save(List<EntrustmentIdentificationMaterial> materialList, DLPUser dlpUser);
EntrustmentIdentificationMaterial bizAccept_Apply(EntrustmentIdentificationMaterial identificationMaterial, Integer opCode, DLPUser dlpUser); List<EntrustmentIdentificationMaterial> bizAccept_Apply_Batch(List<EntrustmentIdentificationMaterial> identificationMaterialList, Integer opCode, DLPUser dlpUser);
EntrustmentIdentificationMaterial createIdentificationMaterialByEvidenceId(EntrustmentIdentificationMaterial identificationMaterial, DLPUser dlpUser); EntrustmentIdentificationMaterial createIdentificationMaterialByEvidenceId(EntrustmentIdentificationMaterial identificationMaterial, DLPUser dlpUser);

@ -694,11 +694,17 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
} }
@Override @Override
public EntrustmentIdentificationMaterial bizAccept_Apply(EntrustmentIdentificationMaterial identificationMaterial, Integer opCode, DLPUser dlpUser) { public List<EntrustmentIdentificationMaterial> bizAccept_Apply_Batch(List<EntrustmentIdentificationMaterial> identificationMaterials, Integer opCode, DLPUser dlpUser) {
if (opCode == null) { if (opCode == null) {
throw new RuntimeException(String.format("受理结果必须提供 opCode")); throw new RuntimeException("受理结果必须提供 opCode");
} }
// 用于存储处理后的检材信息
List<EntrustmentIdentificationMaterial> processedMaterials = new ArrayList<>();
// 开始事务
try {
for (EntrustmentIdentificationMaterial identificationMaterial : identificationMaterials) {
// 检查委托原来的状态 // 检查委托原来的状态
EntrustmentIdentificationMaterial im = this.getById(identificationMaterial.getId()); EntrustmentIdentificationMaterial im = this.getById(identificationMaterial.getId());
if (im == null) { if (im == null) {
@ -721,13 +727,13 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
// 受理通过, 修改属性 // 受理通过, 修改属性
String entrustAcceptNo = com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(entrustment.getAcceptNo()) ? entrustment.getAcceptNo() : ""; String entrustAcceptNo = com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(entrustment.getAcceptNo()) ? entrustment.getAcceptNo() : "";
String acceptNo = ""; String acceptNo = "";
List<EntrustmentIdentificationMaterial> materialList = this.list(Wrappers.<EntrustmentIdentificationMaterial>lambdaQuery() List<EntrustmentIdentificationMaterial> materialList = this.list(Wrappers.<EntrustmentIdentificationMaterial>lambdaQuery()
.eq(EntrustmentIdentificationMaterial::getEntrustmentId, im.getEntrustmentId()) .eq(EntrustmentIdentificationMaterial::getEntrustmentId, im.getEntrustmentId())
.isNotNull(EntrustmentIdentificationMaterial::getAcceptNo)); .isNotNull(EntrustmentIdentificationMaterial::getAcceptNo));
//2024-3-26 修改:我们已经不需要在受理检材时生成受理编号,我们这时会生成受理顺序号,检材编号到最后受理完成的时候再生成!
if (entrustment.getDataSources() != 1) { if (entrustment.getDataSources() != 1) {
if (materialList.size() > 0) { if (materialList.size() > 0) {
//说明该委托下,已经有受理的检材了,我们需要取出最大的那个编号生成新的编号
entrustAcceptNo = materialList.get(0).getAcceptNo(); entrustAcceptNo = materialList.get(0).getAcceptNo();
entrustAcceptNo = entrustAcceptNo.substring(0, entrustAcceptNo.lastIndexOf("-")); entrustAcceptNo = entrustAcceptNo.substring(0, entrustAcceptNo.lastIndexOf("-"));
log.info("该检材对应的委托下,已经有检材被受理,我们根据已受理的检材读取出的受理编号是{}", entrustAcceptNo); log.info("该检材对应的委托下,已经有检材被受理,我们根据已受理的检材读取出的受理编号是{}", entrustAcceptNo);
@ -745,7 +751,7 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
} }
} }
//设置受理编号 // 设置受理编号
im.setAcceptNo(acceptNo); im.setAcceptNo(acceptNo);
im.setProvidedSample1No(identificationMaterial.getProvidedSample1No()); im.setProvidedSample1No(identificationMaterial.getProvidedSample1No());
im.setProvidedSample1FundQuantity(identificationMaterial.getProvidedSample1FundQuantity()); im.setProvidedSample1FundQuantity(identificationMaterial.getProvidedSample1FundQuantity());
@ -770,15 +776,6 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
im.setSample2Quantity(identificationMaterial.getSample2Quantity()); im.setSample2Quantity(identificationMaterial.getSample2Quantity());
im.setSample2BoxId(identificationMaterial.getSample2BoxId()); im.setSample2BoxId(identificationMaterial.getSample2BoxId());
SampleBox sb1 = null;
SampleBox sb2 = null;
// 如果之前没有生成过样本编号, 现在填写样本重量了, 那么就生成样本编号
//if ((identificationMaterial.getSample1Present() != null) && (identificationMaterial.getSample1Present())) {
//12-4日我们不再将承载物信息设置成必填了
// if ((identificationMaterial.getSample1FundQuantity() == null) ||
// (identificationMaterial.getSample1FundQuantity().compareTo(0) == 0)) {
// throw new RuntimeException(String.format("样本1的承载物数量不能为空, 也不能为 0"));
// }
if ((identificationMaterial.getSample1Quantity() == null) || if ((identificationMaterial.getSample1Quantity() == null) ||
(identificationMaterial.getSample1Quantity().equals(BigDecimal.ZERO))) { (identificationMaterial.getSample1Quantity().equals(BigDecimal.ZERO))) {
throw new RuntimeException(String.format("样本1的数量不能为空, 也不能为 0")); throw new RuntimeException(String.format("样本1的数量不能为空, 也不能为 0"));
@ -787,13 +784,7 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
im.setSample1No(sampleService.getNewSampleNo(im.getImNo(), 1)); im.setSample1No(sampleService.getNewSampleNo(im.getImNo(), 1));
} }
if ((identificationMaterial.getSample2Present() != null) && (identificationMaterial.getSample2Present())) { if ((identificationMaterial.getSample2Present() != null) && (identificationMaterial.getSample2Present())) {
//12-4日我们不再将承载物信息设置成必填了
// if ((identificationMaterial.getSample2FundQuantity() == null) ||
// (identificationMaterial.getSample2FundQuantity().compareTo(0) == 0)) {
// throw new RuntimeException(String.format("样本2的承载物数量不能为空, 也不能为 0"));
// }
if ((identificationMaterial.getSample2Quantity() == null) || if ((identificationMaterial.getSample2Quantity() == null) ||
(identificationMaterial.getSample2Quantity().compareTo(BigDecimal.ZERO) == 0)) { (identificationMaterial.getSample2Quantity().compareTo(BigDecimal.ZERO) == 0)) {
throw new RuntimeException(String.format("样本2的数量不能为空, 也不能为 0")); throw new RuntimeException(String.format("样本2的数量不能为空, 也不能为 0"));
@ -813,17 +804,25 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
// 受理未通过, 不修改属性 // 受理未通过, 不修改属性
im.setAcceptPassed(opCode); im.setAcceptPassed(opCode);
im.setAcceptTime(LocalDateTime.now()); im.setAcceptTime(LocalDateTime.now());
im.setAcceptNo("");//如果拒绝受理 im.setAcceptNo("");
if (!this.updateById(im)) { if (!this.updateById(im)) {
throw new RuntimeException("保存检材信息失败"); throw new RuntimeException("保存检材信息失败");
} }
} }
// 从数据库表中取出保存的委托对象, 后续的操作我们以此为准 // 从数据库表中取出保存的委托对象, 后续的操作我们以此为准
im = this.getById(identificationMaterial.getId()); im = this.getById(identificationMaterial.getId());
if (im == null) { if (im == null) {
throw new RuntimeException(String.format("没有找到 id 为 %s 的检材", identificationMaterial.getId())); throw new RuntimeException(String.format("没有找到 id 为 %s 的检材", identificationMaterial.getId()));
} }
return im; processedMaterials.add(im);
}
} catch (Exception e) {
// 回滚事务
throw new RuntimeException(e.getMessage());
}
return processedMaterials;
} }
@Override @Override

@ -3580,6 +3580,7 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
deliverer1.setName(entrustment.getDeliverer1Name()); deliverer1.setName(entrustment.getDeliverer1Name());
deliverer1.setPhone(entrustment.getDeliverer1Phone()); deliverer1.setPhone(entrustment.getDeliverer1Phone());
deliverer1.setPosition(entrustment.getDeliverer1Position()); deliverer1.setPosition(entrustment.getDeliverer1Position());
deliverer1.setId(entrustment.getDeliverer1Id());
// 设置第二个配送员的信息,并加入到列表中 // 设置第二个配送员的信息,并加入到列表中
Deliverer deliverer2 = new Deliverer(); Deliverer deliverer2 = new Deliverer();
@ -3587,6 +3588,7 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
deliverer2.setName(entrustment.getDeliverer2Name()); deliverer2.setName(entrustment.getDeliverer2Name());
deliverer2.setPhone(entrustment.getDeliverer2Phone()); deliverer2.setPhone(entrustment.getDeliverer2Phone());
deliverer2.setPosition(entrustment.getDeliverer2Position()); deliverer2.setPosition(entrustment.getDeliverer2Position());
deliverer2.setId(entrustment.getDeliverer2Id());
deliverers.add(deliverer1); deliverers.add(deliverer1);
deliverers.add(deliverer2); deliverers.add(deliverer2);

Loading…
Cancel
Save