导入物料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.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication @SpringBootApplication
@EnableRyFeignClients @EnableRyFeignClients
@EnableDiscoveryClient @EnableDiscoveryClient
@MapperScan("com.mhd.wms.domain.**.mapper") @MapperScan("com.mhd.wms.domain.**.mapper")
@EnableMethodCache(basePackages = "com.mhd.platform.domain.**.cache") @EnableMethodCache(basePackages = "com.mhd.platform.domain.**.cache")
@EnableAsync
@ComponentScan(basePackages = { @ComponentScan(basePackages = {
"com.mhd.wms", "com.mhd.wms",
"com.mhd.system.api.factory" "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.facade.IMaterialBaseInfoService;
import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMapper; import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMapper;
import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; 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.service.MaterialCommonDomainService;
import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO;
import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService; import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService;
@@ -61,6 +63,10 @@ public class MaterialBaseInfoAsyncService {
private MaterialInventoryWarningDomainService materialInventoryWarningDomainService; private MaterialInventoryWarningDomainService materialInventoryWarningDomainService;
@Autowired @Autowired
private MaterialBarCodeDomainService materialBarCodeDomainService; private MaterialBarCodeDomainService materialBarCodeDomainService;
@Autowired
private MaterialBaseInfoDomainService materialBaseInfoDomainService;
@Autowired
private com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService materialGoodsRuleDomainService;
@Async @Async
public void doImportData(File tmpFile, String fileName, LoginUser loginUser) { public void doImportData(File tmpFile, String fileName, LoginUser loginUser) {
@@ -191,21 +197,37 @@ public class MaterialBaseInfoAsyncService {
materialBaseInfoDO.setMaterialCommon(null); materialBaseInfoDO.setMaterialCommon(null);
materialBaseInfoDO.setMaterialWarehouseControl(null); materialBaseInfoDO.setMaterialWarehouseControl(null);
materialBaseInfoDO.setMaterialBarCodeList(buildImportBarCodeList(row)); materialBaseInfoDO.setMaterialBarCodeList(buildImportBarCodeList(row));
// 直接调用 insert,通过自身注入的 materialBaseInfoService // 补全创建人信息(异步线程没有 SecurityContext,用 loginUser
materialBaseInfoService.save(convertToEntity(materialBaseInfoDO)); if (loginUser != null) {
Long materialBaseInfoId = materialBaseInfoDO.getMaterialBaseInfoId(); 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(); MaterialCommonDO materialCommonDO = materialBaseInfoDO.getMaterialCommon();
if (materialCommonDO != null) { if (materialCommonDO != null) {
materialCommonDO.setMaterialBaseInfoId(materialBaseInfoId); materialCommonDO.setMaterialBaseInfoId(materialBaseInfoId);
materialCommonDomainService.insert(materialCommonDO); materialCommonDomainService.insert(materialCommonDO);
} }
// 仓库控制信息
MaterialWarehouseControlDO materialWarehouseControlDO = materialBaseInfoDO.getMaterialWarehouseControl(); MaterialWarehouseControlDO materialWarehouseControlDO = materialBaseInfoDO.getMaterialWarehouseControl();
if (materialWarehouseControlDO != null) { if (materialWarehouseControlDO != null) {
materialWarehouseControlDO.setMaterialBaseInfoId(materialBaseInfoId); materialWarehouseControlDO.setMaterialBaseInfoId(materialBaseInfoId);
materialWarehouseControlDomainService.insert(materialWarehouseControlDO); materialWarehouseControlDomainService.insert(materialWarehouseControlDO);
} }
// 库存预警
materialInventoryWarningDomainService.batchInsertOrUpdate(materialBaseInfoDO); materialInventoryWarningDomainService.batchInsertOrUpdate(materialBaseInfoDO);
// 条码信息
materialBarCodeDomainService.batchInsertOrUpdate(materialBaseInfoDO); materialBarCodeDomainService.batchInsertOrUpdate(materialBaseInfoDO);
successCount++; successCount++;
} catch (Exception e) { } catch (Exception e) {
@@ -235,12 +257,6 @@ public class MaterialBaseInfoAsyncService {
// ====== 以下方法从 MaterialBaseInfoApplicationService 复制,避免循环依赖 ====== // ====== 以下方法从 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) { private void normalizeImportBarCodeWhenDuplicateOfHs(MaterialBaseInfoDTO row) {
if (row == null || StringUtils.isBlank(row.getBarCode())) { if (row == null || StringUtils.isBlank(row.getBarCode())) {
return; return;