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 0424c3865..ffba4043c 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
@@ -15,11 +15,9 @@ import com.mhd.wms.domain.materialBarCode.service.MaterialBarCodeDomainService;
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.po.MaterialBaseInfoPO;
import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO;
import com.mhd.wms.domain.materialCommon.service.MaterialCommonDomainService;
import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO;
-import com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService;
import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService;
import com.mhd.wms.domain.materialWarehouseControl.service.MaterialWarehouseControlDomainService;
import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO;
@@ -37,14 +35,11 @@ import org.springframework.util.CollectionUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
-import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* 物料主数据异步导入服务
- *
- *
必须放在独立的 Service 类中,否则类内部 self-invocation 会导致 @Async 失效。
*/
@Slf4j
@Service
@@ -55,14 +50,10 @@ public class MaterialBaseInfoAsyncService {
@Autowired
private MaterialBaseInfoMapper materialBaseInfoMapper;
@Autowired
- private MaterialBaseInfoApplicationService materialBaseInfoApplicationService;
- @Autowired
private SystemServiceFeign systemServiceFeign;
@Autowired
private UserServiceFeign userServiceFeign;
@Autowired
- private MaterialGoodsRuleDomainService materialGoodsRuleDomainService;
- @Autowired
private MaterialCommonDomainService materialCommonDomainService;
@Autowired
private MaterialWarehouseControlDomainService materialWarehouseControlDomainService;
@@ -71,11 +62,6 @@ public class MaterialBaseInfoAsyncService {
@Autowired
private MaterialBarCodeDomainService materialBarCodeDomainService;
- /**
- * 异步执行物料主数据导入
- *
- * @Async 在独立线程中执行,不阻塞接口响应。
- */
@Async
public void doImportData(File tmpFile, String fileName, LoginUser loginUser) {
long startTime = System.currentTimeMillis();
@@ -88,7 +74,6 @@ public class MaterialBaseInfoAsyncService {
log.error("物料主数据异步导入失败 - 文件解析异常:{}", e.getMessage(), e);
return;
}
-
if (CollectionUtils.isEmpty(rows)) {
log.warn("物料主数据异步导入结束 - 导入数据为空");
return;
@@ -105,8 +90,6 @@ public class MaterialBaseInfoAsyncService {
Set duplicateInFile = new HashSet<>();
int successCount = 0;
int totalCount = rows.size();
-
- // 包装规格缓存
Map> packCache = new HashMap<>();
for (int i = 0; i < rows.size(); i++) {
@@ -133,21 +116,21 @@ public class MaterialBaseInfoAsyncService {
if (StringUtils.isBlank(row.getHsCode()) && StringUtils.isNotBlank(row.getHsCodeImport())) {
row.setHsCode(row.getHsCodeImport().trim());
}
- materialBaseInfoApplicationService.normalizeImportBarCodeWhenDuplicateOfHs(row);
- materialBaseInfoApplicationService.fillIdsFromExistingMasterData(row);
- materialBaseInfoApplicationService.fillOrganizationFromShipperIfNeeded(row);
+ normalizeImportBarCodeWhenDuplicateOfHs(row);
+ fillIdsFromExistingMasterData(row);
+ fillOrganizationFromShipperIfNeeded(row);
if (!isValidOrgId(row.getOrganizationId()) && isValidOrgId(loginOrgId)) {
row.setOrganizationId(loginOrgId);
}
if (row.getTopOrganizationId() == null && isValidOrgId(loginTopOrgId)) {
row.setTopOrganizationId(loginTopOrgId);
}
- materialBaseInfoApplicationService.fillOrganizationName(row, loginUser);
+ fillOrganizationName(row, loginUser);
String shipperCode = StringUtils.defaultString(row.getShipperCode(), "");
String duplicateKey = row.getOrganizationId() + "|" + shipperCode + "|" + row.getMaterialCode();
if (!duplicateInFile.add(duplicateKey)) {
- errors.append("第").append(rowNum).append("行:文件内存在重复物料(组织+货主编码+物料编码);");
+ errors.append("第").append(rowNum).append("行:文件内存在重复物料;");
continue;
}
@@ -161,10 +144,10 @@ public class MaterialBaseInfoAsyncService {
wrapper.eq(MaterialBaseInfo::getShipperCode, row.getShipperCode());
}
if (materialBaseInfoService.count(wrapper) > 0) {
- errors.append("第").append(rowNum).append("行:物料已存在(组织+货主编码+物料编码);");
+ errors.append("第").append(rowNum).append("行:物料已存在;");
continue;
}
- materialBaseInfoApplicationService.fillClassifyTypeAndUnit(row);
+ normalizeMaterialClassifyImportFields(row);
// 包装规格查询(带缓存)
String packCacheKey = row.getOrganizationId() + "|" + StringUtils.defaultString(row.getPackName());
@@ -177,28 +160,24 @@ public class MaterialBaseInfoAsyncService {
continue;
}
Map resultMap = JSON.parseObject(JSONObject.toJSONString(result), new TypeReference