导入物料BUG修改

This commit is contained in:
秦鸿展
2026-07-25 13:13:32 +08:00
parent 33a6e875ce
commit 57cce338b1
2 changed files with 28 additions and 10 deletions
@@ -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"
@@ -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;