diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 2efa17b33..bf0a4df7d 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -1492,10 +1492,6 @@ public class IoCodeTempController extends BaseController { codeEnttity.setProductType(2); codeEnttity.setCount(1); String unitFk = null; - // TODO: 2024/10/17 异步调用 查询是否存在药品关联信息 后将结果更新至 temp表 - ThreadUtil.execAsync(() -> { - relCodeBatchService.threadUpdateIoCodeTempEntity(codeEnttity); - }); if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) { unitFk = addOrderRequest.getFromCorp(); } else if (StrUtil.isNotEmpty(addOrderRequest.getSelectSupId())) { @@ -1665,6 +1661,8 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.error(500, errMsg); } else codeTempService.insert(codeEnttity); + // 查询是否存在药品关联信息 后将结果更新至 temp表 + relCodeBatchService.threadUpdateIoCodeTempEntity(code); // } else if (bussinessTypeEntity.getCheckWebNew() == 2 && bussinessTypeEntity.isCheckEnable()) { } else if (IntUtil.value(addOrderRequest.getOrderType()) == ConstantStatus.ORDER_TYPE_WAIT && bussinessTypeEntity.isCheckEnable()) { String errMsg = ioCheckInoutService.checkDrugNoPiCode(codeEnttity); @@ -1672,9 +1670,13 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.error(500, errMsg); } else codeTempService.insert(codeEnttity); + // 异步调用 查询是否存在药品关联信息 后将结果更新至 temp表 + relCodeBatchService.threadUpdateIoCodeTempEntity(code); } else { checkPrice(codeEnttity, bussinessTypeEntity, inBatch, codeEnttitys); codeTempService.insert(codeEnttity); + // 查询是否存在药品关联信息 后将结果更新至 temp表 + relCodeBatchService.threadUpdateIoCodeTempEntity(code); } } addCodeResult.setOrderId(orderId); diff --git a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java index a870ee63c..641b1c370 100644 --- a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java +++ b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java @@ -3,6 +3,7 @@ package com.glxp.api.service.collect; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.XmlUtil; import com.alibaba.fastjson.JSONObject; @@ -350,28 +351,55 @@ public class RelCodeBatchService extends ServiceImpl ioCodeTempEntities = ioCodeTempDao.selectList(new LambdaQueryWrapper().eq(IoCodeTempEntity::getCode, parentCode)); + public void threadUpdateIoCodeTempEntity(String parentCode){ + List ioCodeTempEntities = ioCodeTempDao.selectList(new LambdaQueryWrapper().eq(IoCodeTempEntity::getCode, parentCode)); if (CollUtil.isNotEmpty(ioCodeTempEntities)){ - if (this.batchExist(parentCode)){ - //打上匹配到了药品关联关系的标记 - for (int i = 0; i < ioCodeTempEntities.size(); i++) { - IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i); - ioCodeTempEntity.setDrugLink(1); - ioCodeTempDao.updateById(ioCodeTempEntity); - } - }else { - //打上匹配不到了药品关联关系的标记 - for (int i = 0; i < ioCodeTempEntities.size(); i++) { - IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i); - ioCodeTempEntity.setDrugLink(0); - ioCodeTempDao.updateById(ioCodeTempEntity); - } + //1、排除掉层级是1的 + UdiEntity udi = FilterUdiUtils.getUdi(parentCode); + String udi1 = udi.getUdi(); + ProductInfoEntity byNameCode = productInfoService.findByNameCode(udi1); + List navList = this.list(new LambdaQueryWrapper() + .eq(RelCodeBatch::getParentCode, parentCode)); + + if ( (byNameCode != null && "1".equals(byNameCode.getPackLevel())) + || (CollUtil.isNotEmpty(navList)) + ){ + //打上匹配到了药品关联关系的标记 + for (int i = 0; i < ioCodeTempEntities.size(); i++) { + IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i); + ioCodeTempEntity.setDrugLink(1); + ioCodeTempDao.updateById(ioCodeTempEntity); + } + + }else { + ThreadUtil.execAsync(() -> { + asynThreadUpdateIoCodeTempEntity(parentCode,ioCodeTempEntities); + }); + } + } + +} + + + public void asynThreadUpdateIoCodeTempEntity(String parentCode,List ioCodeTempEntities){ + if (this.batchExist(parentCode)){ + //打上匹配到了药品关联关系的标记 + for (int i = 0; i < ioCodeTempEntities.size(); i++) { + IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i); + ioCodeTempEntity.setDrugLink(1); + ioCodeTempDao.updateById(ioCodeTempEntity); + } + }else { + //打上匹配不到了药品关联关系的标记 + for (int i = 0; i < ioCodeTempEntities.size(); i++) { + IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i); + ioCodeTempEntity.setDrugLink(0); + ioCodeTempDao.updateById(ioCodeTempEntity); } } + } }