一键补货
This commit is contained in:
1 parent
1c01a2fa09
commit
e852d7f5e5
10 files changed
+108
-9
No files matched your search
+8
@@ -161,4 +161,12 @@ public class ProductSpuController {
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@PutMapping("/one-click-replenishment")
|
||||
@Operation(summary = "一键补货 SPU Stock")
|
||||
@PreAuthorize("@ss.hasPermission('product:spu:update')")
|
||||
public CommonResult<Boolean> oneClickReplenishment(@RequestParam("deviceId") String deviceId) {
|
||||
productSpuService.oneClickReplenishment(deviceId);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
+4
@@ -31,4 +31,8 @@ public interface ChannelMapper extends BaseMapperX<ChannelDO> {
|
||||
default ChannelDO selectByDeviceIdAndCabinetChannel(String deviceId, String cabinetChannel){
|
||||
return selectOne(ChannelDO::getDeviceId, deviceId, ChannelDO::getCabinetChannel, cabinetChannel);
|
||||
}
|
||||
|
||||
default List<ChannelDO> getChannelListByDeviceid(String deviceId){
|
||||
return selectList(ChannelDO::getDeviceId, deviceId);
|
||||
}
|
||||
}
|
||||
+7
-1
@@ -87,10 +87,16 @@ public interface ProductSkuMapper extends BaseMapperX<ProductSkuDO> {
|
||||
return selectList(ProductSkuDO::getCreator, creator);
|
||||
}
|
||||
|
||||
default int updateSkuStockById(ProductSkuUpdateStockReqVO updateReqVO){
|
||||
default int updateSkuStockIncrById(ProductSkuUpdateStockReqVO updateReqVO){
|
||||
LambdaUpdateWrapper<ProductSkuDO> updateWrapper = new LambdaUpdateWrapper<ProductSkuDO>()
|
||||
.setSql(" stock = stock +" + updateReqVO.getStock())
|
||||
.eq(ProductSkuDO::getId, updateReqVO.getId());
|
||||
return update(null, updateWrapper);
|
||||
}
|
||||
|
||||
default int updateSkuStockById(ProductSkuUpdateStockReqVO updateSkuReqVO){
|
||||
return update(null, new LambdaUpdateWrapper<ProductSkuDO>()
|
||||
.eq(ProductSkuDO::getId, updateSkuReqVO.getId())
|
||||
.set(ProductSkuDO::getStock, updateSkuReqVO.getStock()));
|
||||
}
|
||||
}
|
||||
+8
-1
@@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.spu.vo.ProductSpuPageReqVO;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.spu.vo.ProductSkuUpdateStockReqVO;
|
||||
import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuPageReqVO;
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuCreatorDO;
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
|
||||
import cn.iocoder.yudao.module.product.enums.ProductConstants;
|
||||
@@ -217,7 +218,7 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> {
|
||||
return selectList(query);
|
||||
}
|
||||
|
||||
default int updateSkuStock(ProductSkuUpdateStockReqVO updateReqVO){
|
||||
default int updateSpuStockIncr(ProductSkuUpdateStockReqVO updateReqVO){
|
||||
LambdaUpdateWrapper<ProductSpuDO> updateWrapper = new LambdaUpdateWrapper<ProductSpuDO>()
|
||||
.setSql(" stock = stock +" + updateReqVO.getStock())
|
||||
.eq(ProductSpuDO::getId, updateReqVO.getId());
|
||||
@@ -229,4 +230,10 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> {
|
||||
.eqIfPresent(ProductSpuDO::getDeviceId, deviceId);
|
||||
return selectList(query);
|
||||
}
|
||||
|
||||
default int updateSpuStockById(ProductSkuUpdateStockReqVO updateSpuReqVO){
|
||||
return update(null, new LambdaUpdateWrapper<ProductSpuDO>()
|
||||
.eq(ProductSpuDO::getId, updateSpuReqVO.getId())
|
||||
.set(ProductSpuDO::getStock, updateSpuReqVO.getStock()));
|
||||
}
|
||||
}
|
||||
+2
@@ -57,4 +57,6 @@ public interface ChannelService {
|
||||
ChannelImportRespVO importChannelList(List<ChannelImportExcelVO> list, Boolean updateSupport);
|
||||
|
||||
CommonResult<String> testChannel(Long id);
|
||||
|
||||
List<ChannelDO> getChannelListByDeviceid(String deviceId);
|
||||
}
|
||||
+6
@@ -22,6 +22,7 @@ import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
@@ -193,4 +194,9 @@ public class ChannelServiceImpl implements ChannelService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ChannelDO> getChannelListByDeviceid(String deviceId) {
|
||||
return channelMapper.getChannelListByDeviceid(deviceId);
|
||||
}
|
||||
|
||||
}
|
||||
+3
-1
@@ -119,5 +119,7 @@ public interface ProductSkuService {
|
||||
|
||||
List<ProductSkuRespDTO> getSkuListByCreator(Long creator);
|
||||
|
||||
int updateSkuStockById(ProductSkuUpdateStockReqVO updateReqVO);
|
||||
int updateSkuStockIncrById(ProductSkuUpdateStockReqVO updateReqVO);
|
||||
|
||||
int updateSkuStockById(ProductSkuUpdateStockReqVO updateSkuReqVO);
|
||||
}
|
||||
+7
-2
@@ -230,8 +230,13 @@ public class ProductSkuServiceImpl implements ProductSkuService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateSkuStockById(ProductSkuUpdateStockReqVO updateReqVO) {
|
||||
return productSkuMapper.updateSkuStockById(updateReqVO);
|
||||
public int updateSkuStockIncrById(ProductSkuUpdateStockReqVO updateReqVO) {
|
||||
return productSkuMapper.updateSkuStockIncrById(updateReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateSkuStockById(ProductSkuUpdateStockReqVO updateSkuReqVO) {
|
||||
return productSkuMapper.updateSkuStockById(updateSkuReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
@@ -152,4 +152,6 @@ public interface ProductSpuService {
|
||||
void updateSkuStock(ProductSkuUpdateStockReqVO updateReqVO);
|
||||
|
||||
List<ProductSpuDO> getSpuListByDeviceid(String deviceId);
|
||||
|
||||
void oneClickReplenishment(String deviceId);
|
||||
}
|
||||
+61
-4
@@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*;
|
||||
import cn.iocoder.yudao.module.product.controller.admin.stocklog.vo.StockLogSaveReqVO;
|
||||
import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuPageReqVO;
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO;
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.channel.ChannelDO;
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuCreatorDO;
|
||||
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
|
||||
@@ -18,6 +19,7 @@ import cn.iocoder.yudao.module.product.dal.mysql.spu.ProductSpuMapper;
|
||||
import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum;
|
||||
import cn.iocoder.yudao.module.product.service.brand.ProductBrandService;
|
||||
import cn.iocoder.yudao.module.product.service.category.ProductCategoryService;
|
||||
import cn.iocoder.yudao.module.product.service.channel.ChannelService;
|
||||
import cn.iocoder.yudao.module.product.service.sku.ProductSkuService;
|
||||
import cn.iocoder.yudao.module.product.service.stocklog.StockLogService;
|
||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||
@@ -62,6 +64,9 @@ public class ProductSpuServiceImpl implements ProductSpuService {
|
||||
@Resource
|
||||
private AdminUserApi adminUserApi;
|
||||
|
||||
@Resource
|
||||
private ChannelService channelService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createSpu(ProductSpuSaveReqVO createReqVO) {
|
||||
@@ -185,14 +190,14 @@ public class ProductSpuServiceImpl implements ProductSpuService {
|
||||
}
|
||||
ProductSpuDO productSpuDO = productSpuMapper.selectById(skuDO.getSpuId());
|
||||
// 更新 SKU 库存
|
||||
productSkuService.updateSkuStockById(updateReqVO);
|
||||
productSkuService.updateSkuStockIncrById(updateReqVO);
|
||||
// 更新 SPU 库存
|
||||
int i =productSpuMapper.updateSkuStock(updateReqVO.setId(productSpuDO.getId()));
|
||||
int i =productSpuMapper.updateSpuStockIncr(updateReqVO.setId(productSpuDO.getId()));
|
||||
if (i>0){
|
||||
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(productSpuDO.getCreator()));
|
||||
// AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(productSpuDO.getCreator()));
|
||||
//添加库存log
|
||||
StockLogSaveReqVO stockLogSaveReqVO = new StockLogSaveReqVO();
|
||||
stockLogSaveReqVO.setDeviceId(user.getDeviceId());
|
||||
stockLogSaveReqVO.setDeviceId(productSpuDO.getDeviceId());
|
||||
stockLogSaveReqVO.setSpuName(productSpuDO.getName());
|
||||
stockLogSaveReqVO.setBarCode(skuDO.getBarCode());
|
||||
stockLogSaveReqVO.setCabinetChannel(skuDO.getCabinetChannel());
|
||||
@@ -208,6 +213,58 @@ public class ProductSpuServiceImpl implements ProductSpuService {
|
||||
return productSpuMapper.getSpuListByDeviceid(deviceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void oneClickReplenishment(String deviceId) {
|
||||
//商品列表
|
||||
List<ProductSpuDO> spuList = productSpuMapper.getSpuListByDeviceid(deviceId);
|
||||
if (spuList == null|| spuList.isEmpty()) {
|
||||
throw exception(SKU_NOT_EXISTS);
|
||||
}
|
||||
//查询货道列表
|
||||
List<ChannelDO> channelList = channelService.getChannelListByDeviceid(deviceId);
|
||||
if (channelList == null|| channelList.isEmpty()) {
|
||||
throw exception(CHANNEL_NOT_EXISTS);
|
||||
}
|
||||
Map<String, ChannelDO> channelMap = convertMap(channelList, ChannelDO::getCabinetChannel);
|
||||
for (ProductSpuDO spu : spuList) {
|
||||
List<ProductSkuDO> skuListBySpuId = productSkuService.getSkuListBySpuId(spu.getId());
|
||||
if (skuListBySpuId == null|| skuListBySpuId.isEmpty()){
|
||||
throw exception(SKU_NOT_EXISTS);
|
||||
}
|
||||
ProductSkuUpdateStockReqVO updateSpuReqVO= new ProductSkuUpdateStockReqVO();
|
||||
updateSpuReqVO.setId(spu.getId());
|
||||
updateSpuReqVO.setStock(0);
|
||||
for (ProductSkuDO sku : skuListBySpuId) {
|
||||
ChannelDO channelDO = channelMap.get(sku.getCabinetChannel());
|
||||
if (channelDO == null){
|
||||
throw exception(CHANNEL_NOT_EXISTS);
|
||||
}
|
||||
// 更新 SKU 库存
|
||||
ProductSkuUpdateStockReqVO updateSkuReqVO= new ProductSkuUpdateStockReqVO();
|
||||
updateSkuReqVO.setId(sku.getId());
|
||||
updateSkuReqVO.setStock(channelDO.getMaxNum());
|
||||
int i=productSkuService.updateSkuStockById(updateSkuReqVO);
|
||||
if (i>0){
|
||||
//添加库存log
|
||||
StockLogSaveReqVO stockLogSaveReqVO = new StockLogSaveReqVO();
|
||||
stockLogSaveReqVO.setDeviceId(spu.getDeviceId());
|
||||
stockLogSaveReqVO.setSpuName(spu.getName());
|
||||
stockLogSaveReqVO.setBarCode(sku.getBarCode());
|
||||
stockLogSaveReqVO.setCabinetChannel(sku.getCabinetChannel());
|
||||
stockLogSaveReqVO.setCount(updateSkuReqVO.getStock());
|
||||
stockLogSaveReqVO.setOldStock(sku.getStock());
|
||||
stockLogSaveReqVO.setNewStock(updateSkuReqVO.getStock());
|
||||
stockLogService.createStockLog(stockLogSaveReqVO);
|
||||
updateSpuReqVO.setStock(updateSpuReqVO.getStock()+channelDO.getMaxNum());
|
||||
}
|
||||
}
|
||||
// 更新 SPU 库存
|
||||
if (updateSpuReqVO.getStock()>0){
|
||||
productSpuMapper.updateSpuStockById(updateSpuReqVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteSpu(Long id) {
|
||||
|
||||
Reference in new issue
Block a user