From 57cce338b158a5f4ce69aa1c9748d129f7cf6b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Sat, 25 Jul 2026 13:13:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E7=89=A9=E6=96=99BUG?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mhd/wms/MhdWmsApplication.java | 2 ++ .../MaterialBaseInfoAsyncService.java | 36 +++++++++++++------ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java b/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java index f8b3d4145..a848debd3 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java +++ b/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java @@ -7,12 +7,14 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication @EnableRyFeignClients @EnableDiscoveryClient @MapperScan("com.mhd.wms.domain.**.mapper") @EnableMethodCache(basePackages = "com.mhd.platform.domain.**.cache") +@EnableAsync @ComponentScan(basePackages = { "com.mhd.wms", "com.mhd.system.api.factory" diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoAsyncService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoAsyncService.java index ffba4043c..92412d773 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoAsyncService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoAsyncService.java @@ -16,6 +16,8 @@ import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo; import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMapper; import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; +import com.mhd.wms.domain.materialBaseInfo.service.MaterialBaseInfoDomainService; +import com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService; import com.mhd.wms.domain.materialCommon.service.MaterialCommonDomainService; import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService; @@ -61,6 +63,10 @@ public class MaterialBaseInfoAsyncService { private MaterialInventoryWarningDomainService materialInventoryWarningDomainService; @Autowired private MaterialBarCodeDomainService materialBarCodeDomainService; + @Autowired + private MaterialBaseInfoDomainService materialBaseInfoDomainService; + @Autowired + private com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService materialGoodsRuleDomainService; @Async public void doImportData(File tmpFile, String fileName, LoginUser loginUser) { @@ -191,21 +197,37 @@ public class MaterialBaseInfoAsyncService { materialBaseInfoDO.setMaterialCommon(null); materialBaseInfoDO.setMaterialWarehouseControl(null); materialBaseInfoDO.setMaterialBarCodeList(buildImportBarCodeList(row)); - // 直接调用 insert,通过自身注入的 materialBaseInfoService - materialBaseInfoService.save(convertToEntity(materialBaseInfoDO)); - Long materialBaseInfoId = materialBaseInfoDO.getMaterialBaseInfoId(); - + // 补全创建人信息(异步线程没有 SecurityContext,用 loginUser) + if (loginUser != null) { + materialBaseInfoDO.setCreateBy(loginUser.getUserid()); + materialBaseInfoDO.setCreateByName(loginUser.getUsername()); + } + materialBaseInfoDO.setCreateTime(new Date()); + materialBaseInfoDO.setDelFlag(1); + // 通过 domainService 插入,获取自增 ID + Long materialBaseInfoId = materialBaseInfoDomainService.insert(materialBaseInfoDO); + materialBaseInfoDO.setMaterialBaseInfoId(materialBaseInfoId); + // 商品规则 + com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO goodsRule = materialBaseInfoDO.getMaterialGoodsRule(); + if (goodsRule != null) { + goodsRule.setMaterialBaseInfoId(materialBaseInfoId); + materialGoodsRuleDomainService.insert(goodsRule); + } + // 公共信息 MaterialCommonDO materialCommonDO = materialBaseInfoDO.getMaterialCommon(); if (materialCommonDO != null) { materialCommonDO.setMaterialBaseInfoId(materialBaseInfoId); materialCommonDomainService.insert(materialCommonDO); } + // 仓库控制信息 MaterialWarehouseControlDO materialWarehouseControlDO = materialBaseInfoDO.getMaterialWarehouseControl(); if (materialWarehouseControlDO != null) { materialWarehouseControlDO.setMaterialBaseInfoId(materialBaseInfoId); materialWarehouseControlDomainService.insert(materialWarehouseControlDO); } + // 库存预警 materialInventoryWarningDomainService.batchInsertOrUpdate(materialBaseInfoDO); + // 条码信息 materialBarCodeDomainService.batchInsertOrUpdate(materialBaseInfoDO); successCount++; } catch (Exception e) { @@ -235,12 +257,6 @@ public class MaterialBaseInfoAsyncService { // ====== 以下方法从 MaterialBaseInfoApplicationService 复制,避免循环依赖 ====== - private MaterialBaseInfo convertToEntity(MaterialBaseInfoDO materialBaseInfoDO) { - com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo entity = new com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo(); - BeanUtils.copyProperties(materialBaseInfoDO, entity); - return entity; - } - private void normalizeImportBarCodeWhenDuplicateOfHs(MaterialBaseInfoDTO row) { if (row == null || StringUtils.isBlank(row.getBarCode())) { return;