|
|
@@ -59,6 +59,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 库存账 服务实现类
|
|
|
@@ -209,113 +210,133 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
|
|
|
StringBuffer storage = new StringBuffer();//未找到仓库的商品
|
|
|
List<StockGoodsLog> stockGoodsLogList = new ArrayList<>();
|
|
|
Date date = new Date();
|
|
|
- for (StockGoodsExcel datum : data) {
|
|
|
-
|
|
|
- StockGoodsLog stockGoodsLog = new StockGoodsLog();
|
|
|
- stockGoodsLog.setTime(date);
|
|
|
- stockGoodsLog.setUserName(AuthUtil.getUserName());
|
|
|
- stockGoodsLog.setType("库存导入更新");
|
|
|
- stockGoodsLog.setTenantId(AuthUtil.getTenantId());
|
|
|
- stockGoodsLog.setCreateUser(AuthUtil.getUserId());
|
|
|
- stockGoodsLog.setCreateTime(date);
|
|
|
-
|
|
|
- StockGoods stockGoods = new StockGoods();
|
|
|
- stockGoods.setBalanceQuantity(datum.getSurplusRouteQuantity());//结余数量
|
|
|
- stockGoods.setSurplusRouteQuantity(datum.getSurplusRouteQuantity());//可用数量
|
|
|
- stockGoods.setInQuantity(datum.getSurplusRouteQuantity());//入库数量
|
|
|
- stockGoods.setInAmount(datum.getStockPrice());//入库金额
|
|
|
- stockGoods.setBalanceAmount(datum.getStockPrice());//结余金额
|
|
|
- stockGoods.setOutQuantity(BigDecimal.ZERO);//出库数量
|
|
|
- stockGoods.setEnRouteQuantity(BigDecimal.ZERO);//在途数量
|
|
|
- stockGoods.setTradeType("GN");
|
|
|
- stockGoods.setTenantId(SecureUtil.getTenantId());
|
|
|
- if ("681169".equals(AuthUtil.getTenantId())) {
|
|
|
- stockGoods.setWarehouseId(1510440001509326849L);
|
|
|
+ if (!data.isEmpty()){
|
|
|
+ List<GoodsDesc> goodsDescList = new ArrayList<>();
|
|
|
+ String code = data.stream().map(StockGoodsExcel::getCode).filter(Objects::nonNull).collect(Collectors.joining(","));
|
|
|
+ R<List<GoodsDesc>> goodsR = goodsDescClient.getGoodsListByCode(code);
|
|
|
+ if (goodsR.isSuccess()){
|
|
|
+ goodsDescList = goodsR.getData();
|
|
|
}
|
|
|
- //获取商品id
|
|
|
- R<GoodsDesc> goodsDesc = goodsDescClient.GoodsByCode(datum.getCode());
|
|
|
- if (goodsDesc.isSuccess() && goodsDesc.getData() != null) {
|
|
|
- stockGoods.setGoodsId(goodsDesc.getData().getId());
|
|
|
- if (StringUtils.isNotBlank(goodsDesc.getData().getBrand())) {
|
|
|
- stockGoods.setBrand(goodsDesc.getData().getBrand());
|
|
|
- }
|
|
|
- if (StringUtils.isNotBlank(goodsDesc.getData().getBrandItem())) {
|
|
|
- stockGoods.setBrandItem(goodsDesc.getData().getBrandItem());
|
|
|
+ List<CorpsDesc> corpsDescList = new ArrayList<>();
|
|
|
+ String corpName = data.stream().map(StockGoodsExcel::getCorpName).filter(Objects::nonNull).collect(Collectors.joining(","));
|
|
|
+ R<List<CorpsDesc>> corpR = corpsDescClient.getCorpListByCorpName(corpName);
|
|
|
+ if (goodsR.isSuccess()){
|
|
|
+ corpsDescList = corpR.getData();
|
|
|
+ }
|
|
|
+ List<StorageDesc> storageDescList = new ArrayList<>();
|
|
|
+ String storageName = data.stream().map(StockGoodsExcel::getStorageName).filter(Objects::nonNull).collect(Collectors.joining(","));
|
|
|
+ R<List<StorageDesc>> storageR = storageClient.getStorageList(storageName);
|
|
|
+ if (goodsR.isSuccess()){
|
|
|
+ storageDescList = storageR.getData();
|
|
|
+ }
|
|
|
+ for (StockGoodsExcel datum : data) {
|
|
|
+
|
|
|
+ StockGoodsLog stockGoodsLog = new StockGoodsLog();
|
|
|
+ stockGoodsLog.setTime(date);
|
|
|
+ stockGoodsLog.setUserName(AuthUtil.getUserName());
|
|
|
+ stockGoodsLog.setType("库存导入更新");
|
|
|
+ stockGoodsLog.setTenantId(AuthUtil.getTenantId());
|
|
|
+ stockGoodsLog.setCreateUser(AuthUtil.getUserId());
|
|
|
+ stockGoodsLog.setCreateTime(date);
|
|
|
+
|
|
|
+ StockGoods stockGoods = new StockGoods();
|
|
|
+ stockGoods.setBalanceQuantity(datum.getSurplusRouteQuantity());//结余数量
|
|
|
+ stockGoods.setSurplusRouteQuantity(datum.getSurplusRouteQuantity());//可用数量
|
|
|
+ stockGoods.setInQuantity(datum.getSurplusRouteQuantity());//入库数量
|
|
|
+ stockGoods.setInAmount(datum.getStockPrice());//入库金额
|
|
|
+ stockGoods.setBalanceAmount(datum.getStockPrice());//结余金额
|
|
|
+ stockGoods.setOutQuantity(BigDecimal.ZERO);//出库数量
|
|
|
+ stockGoods.setEnRouteQuantity(BigDecimal.ZERO);//在途数量
|
|
|
+ stockGoods.setTradeType("GN");
|
|
|
+ stockGoods.setTenantId(SecureUtil.getTenantId());
|
|
|
+ if ("681169".equals(AuthUtil.getTenantId())) {
|
|
|
+ stockGoods.setWarehouseId(1510440001509326849L);
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(goodsDesc.getData().getTypeno())) {
|
|
|
- stockGoods.setTypeno(goodsDesc.getData().getTypeno());
|
|
|
- stockGoods.setItemType(goodsDesc.getData().getTypeno());
|
|
|
+ //获取商品id
|
|
|
+ GoodsDesc goodsDesc = goodsDescList.stream().filter(e-> e.getCode().equals(datum.getCode())).findFirst().orElse(null);
|
|
|
+ if (goodsDesc != null) {
|
|
|
+ stockGoods.setGoodsId(goodsDesc.getId());
|
|
|
+ if (StringUtils.isNotBlank(goodsDesc.getBrand())) {
|
|
|
+ stockGoods.setBrand(goodsDesc.getBrand());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(goodsDesc.getBrandItem())) {
|
|
|
+ stockGoods.setBrandItem(goodsDesc.getBrandItem());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(goodsDesc.getTypeno())) {
|
|
|
+ stockGoods.setTypeno(goodsDesc.getTypeno());
|
|
|
+ stockGoods.setItemType(goodsDesc.getTypeno());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(goodsDesc.getSpecsOne())) {
|
|
|
+ stockGoods.setTypenoOne(goodsDesc.getSpecsOne());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(goodsDesc.getSpecsTwo())) {
|
|
|
+ stockGoods.setTypenoTwo(goodsDesc.getSpecsTwo());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(goodsDesc.getPlaceProduction())) {
|
|
|
+ stockGoods.setPlaceProduction(goodsDesc.getPlaceProduction());
|
|
|
+ }
|
|
|
+ stockGoods.setCname(goodsDesc.getCname());
|
|
|
+ stockGoods.setCode(goodsDesc.getCode());
|
|
|
+ } else {
|
|
|
+ good.append(datum.getCode());
|
|
|
+ continue;
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(goodsDesc.getData().getSpecsOne())) {
|
|
|
- stockGoods.setTypenoOne(goodsDesc.getData().getSpecsOne());
|
|
|
+ //获取客户id
|
|
|
+ if (StringUtils.isNotBlank(datum.getCorpName())) {
|
|
|
+ CorpsDesc corpsDesc = corpsDescList.stream().filter(e-> e.getCname().equals(datum.getCorpName())).findFirst().orElse(null);
|
|
|
+ if ( corpsDesc != null) {
|
|
|
+ stockGoods.setCorpId(corpsDesc.getId());
|
|
|
+ stockGoods.setCorpName(corpsDesc.getCname());
|
|
|
+ }
|
|
|
+ } else if (StringUtils.isBlank(datum.getCorpName()) && goodsDesc.getCorpId() != null) {
|
|
|
+ stockGoods.setCorpId(goodsDesc.getCorpId());
|
|
|
+ stockGoods.setCorpName(goodsDesc.getCorpName());
|
|
|
+ } else {
|
|
|
+ corp.append(datum.getCode());
|
|
|
+ continue;
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(goodsDesc.getData().getSpecsTwo())) {
|
|
|
- stockGoods.setTypenoTwo(goodsDesc.getData().getSpecsTwo());
|
|
|
+ if (stockGoods.getCorpId() == null) {
|
|
|
+ corp.append(datum.getCode());
|
|
|
+ continue;
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(goodsDesc.getData().getPlaceProduction())) {
|
|
|
- stockGoods.setPlaceProduction(goodsDesc.getData().getPlaceProduction());
|
|
|
+ //获取仓库id
|
|
|
+ StorageDesc storageDesc = storageDescList.stream().filter(e-> e.getCname().equals(datum.getStorageName())).findFirst().orElse(null);
|
|
|
+ if (storageDesc != null) {
|
|
|
+ stockGoods.setStorageId(storageDesc.getId());
|
|
|
+ } else {
|
|
|
+ storage.append(datum.getCode());
|
|
|
+ continue;
|
|
|
}
|
|
|
- stockGoods.setCname(goodsDesc.getData().getCname());
|
|
|
- stockGoods.setCode(goodsDesc.getData().getCode());
|
|
|
- } else {
|
|
|
- good.append(datum.getCode());
|
|
|
- continue;
|
|
|
- }
|
|
|
- //获取客户id
|
|
|
- if (StringUtils.isNotBlank(datum.getCorpName())) {
|
|
|
- R<CorpsDesc> corpsDesc = corpsDescClient.getCorpByName(datum.getCorpName(), SecureUtil.getTenantId());
|
|
|
- if (corpsDesc.isSuccess() && corpsDesc.getData() != null) {
|
|
|
- stockGoods.setCorpId(corpsDesc.getData().getId());
|
|
|
- stockGoods.setCorpName(corpsDesc.getData().getCname());
|
|
|
+ //查询库存账
|
|
|
+ StockGoods goods = baseMapper.selectOne(new QueryWrapper<StockGoods>().eq("goods_id", stockGoods.getGoodsId())
|
|
|
+ .eq("corp_id", stockGoods.getCorpId()).eq("tenant_id", SecureUtil.getTenantId()).eq("is_deleted", 0)
|
|
|
+ .eq("item_type", stockGoods.getItemType()).eq("storage_id", stockGoods.getStorageId()));
|
|
|
+ if (goods == null) {
|
|
|
+ stockGoods.setCreateTime(new Date());
|
|
|
+ stockGoods.setCreateUser(SecureUtil.getUserId());
|
|
|
+ stockGoods.setLockingQuantity(BigDecimal.ZERO);//锁定数量
|
|
|
+ baseMapper.insert(stockGoods);
|
|
|
+ } else {
|
|
|
+ stockGoodsLog.setStockId(goods.getId());
|
|
|
+ stockGoodsLog.setBalanceQuantityOld(goods.getBalanceQuantity());
|
|
|
+ stockGoodsLog.setSurplusRouteQuantityOld(goods.getSurplusRouteQuantity());
|
|
|
+ stockGoodsLog.setLockingQuantityOld(goods.getLockingQuantity());
|
|
|
+ stockGoodsLog.setOrderQuantity(new BigDecimal("0"));
|
|
|
+
|
|
|
+ stockGoodsLogList.add(stockGoodsLog);
|
|
|
+ stockGoods.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ stockGoods.setUpdateTime(new Date());
|
|
|
+ stockGoods.setId(goods.getId());
|
|
|
+ stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().subtract(goods.getLockingQuantity()));//可用数量 = 可用减去之前的锁定
|
|
|
+ baseMapper.updateById(stockGoods);
|
|
|
+ stockGoodsLog.setBalanceQuantity(stockGoods.getBalanceQuantity());
|
|
|
+ stockGoodsLog.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity());
|
|
|
+ stockGoodsLog.setLockingQuantity(goods.getLockingQuantity());
|
|
|
+ stockGoodsLogList.add(stockGoodsLog);
|
|
|
}
|
|
|
- } else if (StringUtils.isBlank(datum.getCorpName()) && goodsDesc.getData().getCorpId() != null) {
|
|
|
- stockGoods.setCorpId(goodsDesc.getData().getCorpId());
|
|
|
- stockGoods.setCorpName(goodsDesc.getData().getCorpName());
|
|
|
- } else {
|
|
|
- corp.append(datum.getCode());
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (stockGoods.getCorpId() == null) {
|
|
|
- corp.append(datum.getCode());
|
|
|
- continue;
|
|
|
- }
|
|
|
- //获取仓库id
|
|
|
- StorageDesc storageDesc = storageClient.getName(datum.getStorageName());
|
|
|
- if (storageDesc != null) {
|
|
|
- stockGoods.setStorageId(storageDesc.getId());
|
|
|
- } else {
|
|
|
- storage.append(datum.getCode());
|
|
|
- continue;
|
|
|
- }
|
|
|
- //查询库存账
|
|
|
- StockGoods goods = baseMapper.selectOne(new QueryWrapper<StockGoods>().eq("goods_id", stockGoods.getGoodsId())
|
|
|
- .eq("corp_id", stockGoods.getCorpId()).eq("tenant_id", SecureUtil.getTenantId()).eq("is_deleted", 0)
|
|
|
- .eq("item_type", stockGoods.getItemType()).eq("storage_id", stockGoods.getStorageId()));
|
|
|
- if (goods == null) {
|
|
|
- stockGoods.setCreateTime(new Date());
|
|
|
- stockGoods.setCreateUser(SecureUtil.getUserId());
|
|
|
- stockGoods.setLockingQuantity(BigDecimal.ZERO);//锁定数量
|
|
|
- baseMapper.insert(stockGoods);
|
|
|
- } else {
|
|
|
- stockGoodsLog.setStockId(goods.getId());
|
|
|
- stockGoodsLog.setBalanceQuantityOld(goods.getBalanceQuantity());
|
|
|
- stockGoodsLog.setSurplusRouteQuantityOld(goods.getSurplusRouteQuantity());
|
|
|
- stockGoodsLog.setLockingQuantityOld(goods.getLockingQuantity());
|
|
|
- stockGoodsLog.setOrderQuantity(new BigDecimal("0"));
|
|
|
-
|
|
|
- stockGoodsLogList.add(stockGoodsLog);
|
|
|
- stockGoods.setUpdateUser(SecureUtil.getUserId());
|
|
|
- stockGoods.setUpdateTime(new Date());
|
|
|
- stockGoods.setId(goods.getId());
|
|
|
- stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().subtract(goods.getLockingQuantity()));//可用数量 = 可用减去之前的锁定
|
|
|
- baseMapper.updateById(stockGoods);
|
|
|
- stockGoodsLog.setBalanceQuantity(stockGoods.getBalanceQuantity());
|
|
|
- stockGoodsLog.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity());
|
|
|
- stockGoodsLog.setLockingQuantity(goods.getLockingQuantity());
|
|
|
- stockGoodsLogList.add(stockGoodsLog);
|
|
|
}
|
|
|
+ stockGoodsLogService.saveOrUpdateBatch(stockGoodsLogList);
|
|
|
}
|
|
|
- stockGoodsLogService.saveOrUpdateBatch(stockGoodsLogList);
|
|
|
String message = new String("导入成功");
|
|
|
if (StringUtils.isNotBlank(good)) {
|
|
|
message = message + "在基础资料中未查到商品信息的商品有:" + good.toString();
|