| | |
| | | Long topId = findOrCreateTopProduct(sheetName); |
| | | Map<String, Long> nodeCache = new HashMap<>(); |
| | | Map<Long, Set<String>> codeCache = new HashMap<>(); |
| | | Map<Long, Set<String>> modelCache = new HashMap<>(); |
| | | for (int i = 0; i < rows.size(); i++) { |
| | | ProductImportRowDto row = rows.get(i); |
| | | int rowNum = i + 2; |
| | |
| | | path = path + ">" + productName; |
| | | Long leafId = ensureChildNode(nodeCache, path, currentParentId, productName); |
| | | |
| | | String model = StringUtils.isEmpty(row.getModel()) ? "/" : row.getModel().trim(); |
| | | |
| | | // 同一产品下名称(产品节点)+ 型号相同则跳过 |
| | | Set<String> models = modelCache.computeIfAbsent(leafId, this::loadProductModels); |
| | | if (!models.add(model)) { |
| | | skipCount++; |
| | | continue; |
| | | } |
| | | |
| | | String code = trimToNull(row.getProductCode()); |
| | | if (code == null) { |
| | | code = generateUniqueCode(generatedCodes); |
| | |
| | | ProductModel productModel = new ProductModel(); |
| | | productModel.setProductId(leafId); |
| | | productModel.setProductCode(code); |
| | | productModel.setModel(StringUtils.isEmpty(row.getModel()) ? "/" : row.getModel().trim()); |
| | | productModel.setModel(model); |
| | | productModel.setUnit(trimToNull(row.getUnit())); |
| | | productModelMapper.insert(productModel); |
| | | successCount++; |
| | |
| | | return codes; |
| | | } |
| | | |
| | | private Set<String> loadProductModels(Long productId) { |
| | | List<ProductModel> list = productModelMapper.selectList(new LambdaQueryWrapper<ProductModel>() |
| | | .eq(ProductModel::getProductId, productId)); |
| | | Set<String> models = new HashSet<>(); |
| | | for (ProductModel productModel : list) { |
| | | if (StringUtils.isEmpty(productModel.getModel())) { |
| | | models.add("/"); |
| | | } else { |
| | | models.add(productModel.getModel().trim()); |
| | | } |
| | | } |
| | | return models; |
| | | } |
| | | |
| | | private String generateUniqueCode(Set<String> generatedCodes) { |
| | | for (int i = 0; i < 200; i++) { |
| | | String code = randomCode(5); |