超市扣减库存
This commit is contained in:
1 parent
b302738589
commit
3a5067deb0
9 files changed
+113
-1
No files matched your search
+47
@@ -0,0 +1,47 @@
|
|||||||
|
package com.bsd.pjcloud.supermarket.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品 SKU 更新库存 Request DTO
|
||||||
|
*
|
||||||
|
* @author LeeYan9
|
||||||
|
* @since 2022-08-26
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class SupermarketSpuUpdateStockReqDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品 SKU
|
||||||
|
*/
|
||||||
|
@NotNull(message = "商品 SPU 不能为空")
|
||||||
|
private List<Item> items;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class Item {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品 SKU 编号
|
||||||
|
*/
|
||||||
|
@NotNull(message = "商品 SPU 编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库存变化数量
|
||||||
|
*
|
||||||
|
* 正数:增加库存
|
||||||
|
* 负数:扣减库存
|
||||||
|
*/
|
||||||
|
@NotNull(message = "库存变化数量不能为空")
|
||||||
|
private Integer incrCount;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+7
-1
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.bsd.pjcloud.common.core.util.R;
|
import com.bsd.pjcloud.common.core.util.R;
|
||||||
import com.bsd.pjcloud.common.log.annotation.SysLog;
|
import com.bsd.pjcloud.common.log.annotation.SysLog;
|
||||||
|
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
|
||||||
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
||||||
import com.bsd.pjcloud.supermarket.service.SupermarketSpuService;
|
import com.bsd.pjcloud.supermarket.service.SupermarketSpuService;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
@@ -21,7 +22,6 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品spu
|
* 商品spu
|
||||||
@@ -120,4 +120,10 @@ public class SupermarketSpuController {
|
|||||||
public List<SupermarketSpuEntity> export(SupermarketSpuEntity supermarketSpu,Long[] ids) {
|
public List<SupermarketSpuEntity> export(SupermarketSpuEntity supermarketSpu,Long[] ids) {
|
||||||
return supermarketSpuService.list(Wrappers.lambdaQuery(supermarketSpu).in(ArrayUtil.isNotEmpty(ids), SupermarketSpuEntity::getId, ids));
|
return supermarketSpuService.list(Wrappers.lambdaQuery(supermarketSpu).in(ArrayUtil.isNotEmpty(ids), SupermarketSpuEntity::getId, ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/ad/updateSpuStock")
|
||||||
|
@SysLog("更新商品库存")
|
||||||
|
public R updateSkuStock(@RequestBody SupermarketSpuUpdateStockReqDTO updateStockReqDTO){
|
||||||
|
return supermarketSpuService.updateSpuStock(updateStockReqDTO);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
@@ -119,4 +119,7 @@ public class SupermarketUnitController {
|
|||||||
public List<SupermarketUnitEntity> export(SupermarketUnitEntity supermarketUnit,Long[] ids) {
|
public List<SupermarketUnitEntity> export(SupermarketUnitEntity supermarketUnit,Long[] ids) {
|
||||||
return supermarketUnitService.list(Wrappers.lambdaQuery(supermarketUnit).in(ArrayUtil.isNotEmpty(ids), SupermarketUnitEntity::getId, ids));
|
return supermarketUnitService.list(Wrappers.lambdaQuery(supermarketUnit).in(ArrayUtil.isNotEmpty(ids), SupermarketUnitEntity::getId, ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
+4
@@ -309,6 +309,10 @@ public class SupermarketSpuEntity extends Model<SupermarketSpuEntity> {
|
|||||||
@Schema(description="租户编号")
|
@Schema(description="租户编号")
|
||||||
private Long tenantId;
|
private Long tenantId;
|
||||||
|
|
||||||
|
|
||||||
|
@Schema(description = "销量")
|
||||||
|
private Integer salesCount;
|
||||||
|
|
||||||
@Schema(description = "辅助条码集合对象")
|
@Schema(description = "辅助条码集合对象")
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private List<SupermarketAuxiliaryCodeEntity> supermarketAuxiliaryCodeEntityList;
|
private List<SupermarketAuxiliaryCodeEntity> supermarketAuxiliaryCodeEntityList;
|
||||||
|
|||||||
+24
@@ -1,5 +1,6 @@
|
|||||||
package com.bsd.pjcloud.supermarket.mapper;
|
package com.bsd.pjcloud.supermarket.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||||
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
@@ -8,4 +9,27 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
public interface SupermarketSpuMapper extends PjcloudBaseMapper<SupermarketSpuEntity> {
|
public interface SupermarketSpuMapper extends PjcloudBaseMapper<SupermarketSpuEntity> {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新商品 SPU 库存
|
||||||
|
*
|
||||||
|
* @param id 商品 SPU 编号
|
||||||
|
* @param incrCount 增加的库存数量
|
||||||
|
*/
|
||||||
|
default int updateStock(Long id, Integer incrCount) {
|
||||||
|
// 拼接 SQL
|
||||||
|
if (incrCount == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
String sql;
|
||||||
|
if (incrCount > 0) {
|
||||||
|
sql = " stock = stock + " + incrCount + ", sales_count = sales_count - " + incrCount;
|
||||||
|
} else {
|
||||||
|
sql = " stock = stock - " + Math.abs(incrCount) + ", sales_count = sales_count + " + Math.abs(incrCount);
|
||||||
|
}
|
||||||
|
// 执行更新
|
||||||
|
LambdaUpdateWrapper<SupermarketSpuEntity> updateWrapper = new LambdaUpdateWrapper<SupermarketSpuEntity>()
|
||||||
|
.setSql(sql)
|
||||||
|
.eq(SupermarketSpuEntity::getId, id);
|
||||||
|
return update(null, updateWrapper);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+9
@@ -2,6 +2,7 @@ package com.bsd.pjcloud.supermarket.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.bsd.pjcloud.common.core.util.R;
|
import com.bsd.pjcloud.common.core.util.R;
|
||||||
|
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
|
||||||
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -16,4 +17,12 @@ public interface SupermarketSpuService extends IService<SupermarketSpuEntity> {
|
|||||||
|
|
||||||
|
|
||||||
Object removeSpuBatchByIds(ArrayList<Long> list);
|
Object removeSpuBatchByIds(ArrayList<Long> list);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新商品库存
|
||||||
|
* @param updateStockReqDTO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
R updateSpuStock(SupermarketSpuUpdateStockReqDTO updateStockReqDTO);
|
||||||
}
|
}
|
||||||
+1
@@ -5,4 +5,5 @@ import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity;
|
|||||||
|
|
||||||
public interface SupermarketUnitService extends IService<SupermarketUnitEntity> {
|
public interface SupermarketUnitService extends IService<SupermarketUnitEntity> {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
+17
@@ -3,6 +3,7 @@ package com.bsd.pjcloud.supermarket.service.impl;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.bsd.pjcloud.common.core.util.R;
|
import com.bsd.pjcloud.common.core.util.R;
|
||||||
|
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
|
||||||
import com.bsd.pjcloud.supermarket.entity.SupermarketAuxiliaryCodeEntity;
|
import com.bsd.pjcloud.supermarket.entity.SupermarketAuxiliaryCodeEntity;
|
||||||
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
import com.bsd.pjcloud.supermarket.entity.SupermarketSpuEntity;
|
||||||
import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity;
|
import com.bsd.pjcloud.supermarket.entity.SupermarketUnitEntity;
|
||||||
@@ -106,4 +107,20 @@ public class SupermarketSpuServiceImpl extends ServiceImpl<SupermarketSpuMapper,
|
|||||||
|
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public R updateSpuStock(SupermarketSpuUpdateStockReqDTO updateStockReqDTO) {
|
||||||
|
// 更新 SKU 库存
|
||||||
|
updateStockReqDTO.getItems().forEach(item -> {
|
||||||
|
int i = baseMapper.updateStock(item.getId(), item.getIncrCount());
|
||||||
|
if (item.getIncrCount() < 0) {
|
||||||
|
if (i == 0) {
|
||||||
|
R.failed("商品库存不足");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+1
@@ -50,5 +50,6 @@
|
|||||||
<result property="updateTime" column="update_time"/>
|
<result property="updateTime" column="update_time"/>
|
||||||
<result property="delFlag" column="del_flag"/>
|
<result property="delFlag" column="del_flag"/>
|
||||||
<result property="tenantId" column="tenant_id"/>
|
<result property="tenantId" column="tenant_id"/>
|
||||||
|
<result property="salesCount" column="sales_count"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in new issue
Block a user