|
|
@@ -3,16 +3,19 @@ package com.ecp.tire.center.warehouse.stock.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ecp.tire.center.warehouse.api.plan.entity.CenterOrderPlanItem;
|
|
|
import com.ecp.tire.center.warehouse.api.stock.entity.CenterStockDesc;
|
|
|
import com.ecp.tire.center.warehouse.api.stock.vo.CenterStockDescVo;
|
|
|
import com.ecp.tire.center.warehouse.api.stock.vo.CenterStockImportCodeExcel;
|
|
|
+import com.ecp.tire.center.warehouse.api.stock.vo.CenterStockImportNameExcel;
|
|
|
import com.ecp.tire.center.warehouse.api.stock.vo.CenterStockItemDetailsVo;
|
|
|
+import com.ecp.tire.center.warehouse.api.storage.entity.CenterStorageRegion;
|
|
|
import com.ecp.tire.center.warehouse.plan.mapper.CenterOrderPlanItemMapper;
|
|
|
import com.ecp.tire.center.warehouse.stock.mapper.CenterStockDescMapper;
|
|
|
import com.ecp.tire.center.warehouse.stock.service.ICenterStockDescService;
|
|
|
+import com.ecp.tire.center.warehouse.storage.mapper.CenterStorageRegionMapper;
|
|
|
+import com.ecp.tire.center.warehouse.storage.service.ICenterStorageRegionService;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springblade.common.enums.CommonEnum;
|
|
|
import org.springblade.common.enums.NumberEnum;
|
|
|
@@ -31,6 +34,7 @@ import org.springblade.salesPart.excel.PjShipStockDetails;
|
|
|
import org.springblade.salesPart.excel.ShipItemImportCodeExcel;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
@@ -48,7 +52,7 @@ import java.util.stream.Collectors;
|
|
|
@AllArgsConstructor
|
|
|
public class CenterStockDescServiceImpl extends ServiceImpl<CenterStockDescMapper, CenterStockDesc> implements ICenterStockDescService {
|
|
|
|
|
|
- private final CenterOrderPlanItemMapper centerOrderPlanItemMapper;
|
|
|
+ private final ICenterStorageRegionService centerStorageRegionService;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -107,10 +111,10 @@ public class CenterStockDescServiceImpl extends ServiceImpl<CenterStockDescMappe
|
|
|
if (CollectionUtils.isEmpty(excelList)) {
|
|
|
return R.fail("导入数据不能为空");
|
|
|
}
|
|
|
- List<String> codesList = excelList.stream().filter(stock -> StringUtils.hasText(stock.getCode()) && StringUtils.hasText(stock.getDot()))
|
|
|
- .map(stock -> stock.getCode() + "-" + stock.getDot()).distinct().collect(Collectors.toList());
|
|
|
+ List<String> codesList = excelList.stream().filter(stock -> StringUtils.hasText(stock.getCode()) && StringUtils.hasText(stock.getDot()) && StringUtils.hasText(stock.getRegionName()))
|
|
|
+ .map(stock -> stock.getCode() + "-" + stock.getDot() + "-" + stock.getRegionName()).distinct().collect(Collectors.toList());
|
|
|
if (excelList.size() != codesList.size()) {
|
|
|
- return R.fail("导入数据存在重复商品编码+批次号,请处理后再导入");
|
|
|
+ return R.fail("导入数据存在重复商品编码+批次号+库区,请处理后再导入");
|
|
|
}
|
|
|
BladeUser bladeUser = AuthUtil.getUser();
|
|
|
List<CenterOrderPlanItem> centerOrderPlanItemList = new ArrayList<>();
|
|
|
@@ -121,6 +125,7 @@ public class CenterStockDescServiceImpl extends ServiceImpl<CenterStockDescMappe
|
|
|
.eq(CenterStockDesc::getStorageId, storageId)
|
|
|
.in(CenterStockDesc::getCode, excelList.stream().map(CenterStockImportCodeExcel::getCode).filter(StringUtils::hasText).distinct().collect(Collectors.toList()));
|
|
|
List<CenterStockDesc> centerStockDescList = baseMapper.selectList(lambdaQueryWrapper);
|
|
|
+ List<CenterStorageRegion> centerStorageRegionList = centerStorageRegionService.getStorageRegionList(storageId);
|
|
|
StringBuilder text = new StringBuilder();
|
|
|
for (int i = 0; i < excelList.size(); i++) {
|
|
|
int count = 0;
|
|
|
@@ -138,16 +143,26 @@ public class CenterStockDescServiceImpl extends ServiceImpl<CenterStockDescMappe
|
|
|
text.append("第").append(i + 2).append("行,批次号为空").append("\n");
|
|
|
count = 1;
|
|
|
}
|
|
|
+ if (!StringUtils.hasText(itemExcel.getRegionName())) {
|
|
|
+ text.append("第").append(i + 2).append("行,库区为空").append("\n");
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
+ CenterStorageRegion region = centerStorageRegionList.stream().filter(e -> e.getRegionName().equals(itemExcel.getRegionName())).findFirst().orElse(null);
|
|
|
+ boolean exist = ObjectUtils.isEmpty(region);
|
|
|
+ if (exist) {
|
|
|
+ text.append("第").append(i + 2).append("行,库区不存在").append("\n");
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
CenterOrderPlanItem item = new CenterOrderPlanItem();
|
|
|
BeanUtil.copy(itemExcel, item);
|
|
|
//查询商品信息
|
|
|
- CenterStockDesc goodsDesc = centerStockDescList.stream().filter(e -> e.getCode().equals(itemExcel.getCode())
|
|
|
+ CenterStockDesc goodsDesc = centerStockDescList.stream().filter(e -> e.getCode().equals(itemExcel.getCode()) && (!ObjectUtils.isEmpty(region) && e.getRegionId().equals(region.getId()))
|
|
|
&& e.getDot().equals(itemExcel.getDot())).findFirst().orElse(null);
|
|
|
if (goodsDesc == null) {
|
|
|
text.append("第").append(i + 2).append("行,商品在该仓库不存在").append("\n");
|
|
|
continue;
|
|
|
}
|
|
|
- item.setGoodsId(goodsDesc.getId());
|
|
|
+ item.setGoodsId(goodsDesc.getGoodsId());
|
|
|
item.setGoodsName(goodsDesc.getCname());
|
|
|
item.setGoodsNo(goodsDesc.getCode());
|
|
|
item.setBrandId(goodsDesc.getBrandId());
|
|
|
@@ -155,9 +170,12 @@ public class CenterStockDescServiceImpl extends ServiceImpl<CenterStockDescMappe
|
|
|
item.setPropertyName(goodsDesc.getTypeNo());
|
|
|
item.setPattern(goodsDesc.getBrandItem());
|
|
|
item.setGoodsDescription(goodsDesc.getProductDescription());
|
|
|
- item.setSubTotalMoney(item.getPrice().multiply(itemExcel.getGoodsNum()));
|
|
|
- item.setRebateCostprie(item.getGoodsNum().multiply(item.getRebatePrice()));
|
|
|
- item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
|
|
|
+ item.setSubTotalMoney(Objects.isNull(item.getPrice()) ? BigDecimal.ZERO : item.getPrice().multiply(itemExcel.getGoodsNum()));
|
|
|
+ item.setRegionId(exist ? null : region.getId());
|
|
|
+ item.setRegionName(exist ? null : region.getRegionName());
|
|
|
+ item.setBillNo(goodsDesc.getPlanNo());
|
|
|
+ item.setBillId(goodsDesc.getPlanId());
|
|
|
+ item.setInventory(goodsDesc.getBalanceQuantity());
|
|
|
if (count == 0) {
|
|
|
centerOrderPlanItemList.add(item);
|
|
|
}
|
|
|
@@ -178,5 +196,82 @@ public class CenterStockDescServiceImpl extends ServiceImpl<CenterStockDescMappe
|
|
|
return centerStockItemDetailsVos;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R importItemName(List<CenterStockImportNameExcel> excelList, Long storageId) {
|
|
|
+ if (CollectionUtils.isEmpty(excelList)) {
|
|
|
+ return R.fail("导入数据不能为空");
|
|
|
+ }
|
|
|
+ List<String> codesList = excelList.stream().filter(stock -> StringUtils.hasText(stock.getGoodsName()) && StringUtils.hasText(stock.getDot()) && StringUtils.hasText(stock.getRegionName()))
|
|
|
+ .map(stock -> stock.getGoodsName() + "-" + stock.getDot() + "-" + stock.getRegionName()).distinct().collect(Collectors.toList());
|
|
|
+ if (excelList.size() != codesList.size()) {
|
|
|
+ return R.fail("导入数据存在重复商品名称+批次号+库区,请处理后再导入");
|
|
|
+ }
|
|
|
+ BladeUser bladeUser = AuthUtil.getUser();
|
|
|
+ List<CenterOrderPlanItem> centerOrderPlanItemList = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<CenterStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(CenterStockDesc::getTenantId, bladeUser.getTenantId())
|
|
|
+ .eq(CenterStockDesc::getIsDeleted, 0)
|
|
|
+ // 需前端传仓库
|
|
|
+ .eq(CenterStockDesc::getStorageId, storageId)
|
|
|
+ .in(CenterStockDesc::getCname, excelList.stream().map(CenterStockImportNameExcel::getGoodsName).filter(StringUtils::hasText).distinct().collect(Collectors.toList()));
|
|
|
+ List<CenterStockDesc> centerStockDescList = baseMapper.selectList(lambdaQueryWrapper);
|
|
|
+ List<CenterStorageRegion> centerStorageRegionList = centerStorageRegionService.getStorageRegionList(storageId);
|
|
|
+ StringBuilder text = new StringBuilder();
|
|
|
+ for (int i = 0; i < excelList.size(); i++) {
|
|
|
+ int count = 0;
|
|
|
+ //判断必填项是否为空
|
|
|
+ CenterStockImportNameExcel itemExcel = excelList.get(i);
|
|
|
+ if (ObjectUtil.isEmpty(itemExcel.getGoodsName())) {
|
|
|
+ text.append("第").append(i + 2).append("行,商品名称为空").append("\n");
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isEmpty(itemExcel.getGoodsNum())) {
|
|
|
+ text.append("第").append(i + 2).append("行,数量为空").append("\n");
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
+ if (!StringUtils.hasText(itemExcel.getDot())) {
|
|
|
+ text.append("第").append(i + 2).append("行,批次号为空").append("\n");
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
+ if (!StringUtils.hasText(itemExcel.getRegionName())) {
|
|
|
+ text.append("第").append(i + 2).append("行,库区为空").append("\n");
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
+ CenterStorageRegion region = centerStorageRegionList.stream().filter(e -> e.getRegionName().equals(itemExcel.getRegionName())).findFirst().orElse(null);
|
|
|
+ boolean exist = ObjectUtils.isEmpty(region);
|
|
|
+ if (exist) {
|
|
|
+ text.append("第").append(i + 2).append("行,库区不存在").append("\n");
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
+ CenterOrderPlanItem item = new CenterOrderPlanItem();
|
|
|
+ BeanUtil.copy(itemExcel, item);
|
|
|
+ //查询商品信息
|
|
|
+ CenterStockDesc goodsDesc = centerStockDescList.stream().filter(e -> e.getCname().equals(itemExcel.getGoodsName()) && (!exist && e.getRegionId().equals(region.getId()))
|
|
|
+ && e.getDot().equals(itemExcel.getDot())).findFirst().orElse(null);
|
|
|
+ if (goodsDesc == null) {
|
|
|
+ text.append("第").append(i + 2).append("行,商品在该仓库不存在").append("\n");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ item.setGoodsId(goodsDesc.getGoodsId());
|
|
|
+ item.setGoodsName(goodsDesc.getCname());
|
|
|
+ item.setGoodsNo(goodsDesc.getCode());
|
|
|
+ item.setBrandId(goodsDesc.getBrandId());
|
|
|
+ item.setBrandName(goodsDesc.getBrandName());
|
|
|
+ item.setPropertyName(goodsDesc.getTypeNo());
|
|
|
+ item.setPattern(goodsDesc.getBrandItem());
|
|
|
+ item.setGoodsDescription(goodsDesc.getProductDescription());
|
|
|
+ item.setSubTotalMoney(Objects.isNull(item.getPrice()) ? BigDecimal.ZERO : item.getPrice().multiply(itemExcel.getGoodsNum()));
|
|
|
+ item.setRegionId(exist ? null : region.getId());
|
|
|
+ item.setRegionName(exist ? null : region.getRegionName());
|
|
|
+ item.setBillNo(goodsDesc.getPlanNo());
|
|
|
+ item.setBillId(goodsDesc.getPlanId());
|
|
|
+ item.setInventory(goodsDesc.getBalanceQuantity());
|
|
|
+ if (count == 0) {
|
|
|
+ centerOrderPlanItemList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.data(text.length() == 0 ? centerOrderPlanItemList : "导入失败:" + text);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|