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;