|
@@ -1,6 +1,8 @@
|
|
package com.hys.app.service.erp.impl;
|
|
package com.hys.app.service.erp.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -10,10 +12,12 @@ import com.hys.app.framework.exception.ServiceException;
|
|
import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
|
|
import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
|
|
import com.hys.app.framework.util.PageConvert;
|
|
import com.hys.app.framework.util.PageConvert;
|
|
import com.hys.app.mapper.erp.ProductStockMapper;
|
|
import com.hys.app.mapper.erp.ProductStockMapper;
|
|
|
|
+import com.hys.app.mapper.goods.ProductMapper;
|
|
import com.hys.app.model.erp.dos.ProductDO;
|
|
import com.hys.app.model.erp.dos.ProductDO;
|
|
import com.hys.app.model.erp.dos.ProductStockDO;
|
|
import com.hys.app.model.erp.dos.ProductStockDO;
|
|
import com.hys.app.model.erp.dos.WarehouseDO;
|
|
import com.hys.app.model.erp.dos.WarehouseDO;
|
|
import com.hys.app.model.erp.dto.ProductStockQueryParams;
|
|
import com.hys.app.model.erp.dto.ProductStockQueryParams;
|
|
|
|
+import com.hys.app.model.erp.dto.StockDTO;
|
|
import com.hys.app.model.erp.enums.StockOperateEnum;
|
|
import com.hys.app.model.erp.enums.StockOperateEnum;
|
|
import com.hys.app.model.erp.vo.ProductStockV1;
|
|
import com.hys.app.model.erp.vo.ProductStockV1;
|
|
import com.hys.app.model.erp.vo.ProductStockVO;
|
|
import com.hys.app.model.erp.vo.ProductStockVO;
|
|
@@ -49,7 +53,7 @@ public class ProductStockManagerImpl extends BaseServiceImpl<ProductStockMapper,
|
|
private WarehouseManager warehouseManager;
|
|
private WarehouseManager warehouseManager;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- private ProductManager productManager;
|
|
|
|
|
|
+ private ProductMapper productMapper;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private ProductStockMapper productStockMapper;
|
|
private ProductStockMapper productStockMapper;
|
|
@@ -75,7 +79,7 @@ public class ProductStockManagerImpl extends BaseServiceImpl<ProductStockMapper,
|
|
public List<ProductStockV1> selectList(ProductStockQueryParams request) {
|
|
public List<ProductStockV1> selectList(ProductStockQueryParams request) {
|
|
List<ProductStockV1> productStockV1s = baseMapper.queryList(request);
|
|
List<ProductStockV1> productStockV1s = baseMapper.queryList(request);
|
|
for (ProductStockV1 productStockV1 : productStockV1s) {
|
|
for (ProductStockV1 productStockV1 : productStockV1s) {
|
|
- productStockV1.setProductVO(productManager.getById(productStockV1.getProductId()));
|
|
|
|
|
|
+ productStockV1.setProductVO(productMapper.selectById(productStockV1.getProductId()));
|
|
}
|
|
}
|
|
return productStockV1s;
|
|
return productStockV1s;
|
|
}
|
|
}
|
|
@@ -109,7 +113,7 @@ public class ProductStockManagerImpl extends BaseServiceImpl<ProductStockMapper,
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public void initStockByWarehouse(Long warehouseId) {
|
|
public void initStockByWarehouse(Long warehouseId) {
|
|
- List<ProductDO> list = productManager.list();
|
|
|
|
|
|
+ List<ProductDO> list = productMapper.selectList();
|
|
List<ProductStockDO> arrayList = new ArrayList<>();
|
|
List<ProductStockDO> arrayList = new ArrayList<>();
|
|
for (ProductDO aDo : list) {
|
|
for (ProductDO aDo : list) {
|
|
ProductStockDO aDo1 = new ProductStockDO();
|
|
ProductStockDO aDo1 = new ProductStockDO();
|
|
@@ -237,5 +241,53 @@ public class ProductStockManagerImpl extends BaseServiceImpl<ProductStockMapper,
|
|
}
|
|
}
|
|
saveBatch(arrayList);
|
|
saveBatch(arrayList);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void updateLockedStock(List<StockDTO> ids ) {
|
|
|
|
+ List<Long> collect = ids.stream().map(StockDTO::getId).collect(Collectors.toList());
|
|
|
|
+ List<ProductStockDO> list = list(new LambdaQueryWrapper<ProductStockDO>().in(ProductStockDO::getId,collect));
|
|
|
|
+ if (list.size() != ids.size()){
|
|
|
|
+ throw new ServiceException("部分库存信息记录未查询到");
|
|
|
|
+ }
|
|
|
|
+ for (ProductStockDO aDo : list) {
|
|
|
|
+ StockDTO stockDTO = ids.stream().filter(item -> item.getId().equals(aDo.getId())).findFirst().get();
|
|
|
|
+ Integer currentLocked = aDo.getLockedStock()+stockDTO.getNum();
|
|
|
|
+ aDo.setLockedStock(currentLocked);
|
|
|
|
+ aDo.setUsableStock(aDo.getActualStock()-currentLocked);
|
|
|
|
+ }
|
|
|
|
+ updateBatchById(list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void updateActualStock(List<StockDTO> ids,String inventory) {
|
|
|
|
+ List<Long> collect = ids.stream().map(StockDTO::getId).collect(Collectors.toList());
|
|
|
|
+ List<ProductStockDO> list = list(new LambdaQueryWrapper<ProductStockDO>().in(ProductStockDO::getId,collect));
|
|
|
|
+ if (list.size() != ids.size()){
|
|
|
|
+ throw new ServiceException("部分库存信息记录未查询到");
|
|
|
|
+ }
|
|
|
|
+ for (ProductStockDO aDo : list) {
|
|
|
|
+ StockDTO stockDTO = ids.stream().filter(item -> item.getId().equals(aDo.getId())).findFirst().get();
|
|
|
|
+ aDo.setActualStock(aDo.getActualStock()+stockDTO.getNum());
|
|
|
|
+ if (StrUtil.isNotBlank(inventory) && "inventory".equals(inventory)){
|
|
|
|
+ aDo.setActualStock(stockDTO.getNum());
|
|
|
|
+ }
|
|
|
|
+ aDo.setUsableStock(aDo.getActualStock()-aDo.getLockedStock());
|
|
|
|
+ }
|
|
|
|
+ updateBatchById(list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void updateTransitStock(List<StockDTO> ids) {
|
|
|
|
+ List<Long> collect = ids.stream().map(StockDTO::getId).collect(Collectors.toList());
|
|
|
|
+ List<ProductStockDO> list = list(new LambdaQueryWrapper<ProductStockDO>().in(ProductStockDO::getId,collect));
|
|
|
|
+ if (list.size() != ids.size()){
|
|
|
|
+ throw new ServiceException("部分库存信息记录未查询到");
|
|
|
|
+ }
|
|
|
|
+ for (ProductStockDO aDo : list) {
|
|
|
|
+ StockDTO stockDTO = ids.stream().filter(item -> item.getId().equals(aDo.getId())).findFirst().get();
|
|
|
|
+ aDo.setTransitStock(aDo.getTransitStock()+stockDTO.getNum());
|
|
|
|
+ }
|
|
|
|
+ updateBatchById(list);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|