package com.alatus.mall.ware.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.alatus.mall.ware.vo.MergeVo;
import com.alatus.mall.ware.vo.PurchaseDoneVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.alatus.mall.ware.entity.PurchaseEntity;
import com.alatus.mall.ware.service.PurchaseService;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.R;
/**
* 采购信息
*
* @author alatus
* @email 1571345941@qq.com
* @date 2024-03-12 14:08:46
*/
@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
@Autowired
private PurchaseService purchaseService;
/**
* 完成采购单
*/
@PostMapping("/done")
public R finish(@RequestBody PurchaseDoneVo doneVo){
purchaseService.done(doneVo);
return R.ok();
}
/**
* 领取采购单
*/
@PostMapping("/received")
public R Received(@RequestBody List<Long> ids){
purchaseService.received(ids);
return R.ok();
}
/**
* 未被领取的采购单
*/
@GetMapping("/unreceive/list")
public R unReceiveList(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPageUnReceive(params);
return R.ok().put("page", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPage(params);
return R.ok().put("page", page);
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
PurchaseEntity purchase = purchaseService.getById(id);
return R.ok().put("purchase", purchase);
}
/**
* 保存
*/
@RequestMapping("/save")
public R save(@RequestBody PurchaseEntity purchase){
purchase.setCreateTime(new Date());
purchase.setUpdateTime(new Date());
purchaseService.save(purchase);
return R.ok();
}
/**
* 合并到整单
*/
@PostMapping("/merge")
public R Merge(@RequestBody MergeVo mergeVo){
purchaseService.mergePurchase(mergeVo);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody PurchaseEntity purchase){
purchaseService.updateById(purchase);
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
purchaseService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}
package com.alatus.mall.ware.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.alatus.mall.ware.vo.MergeVo;
import com.alatus.mall.ware.vo.PurchaseDoneVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.alatus.mall.ware.entity.PurchaseEntity;
import com.alatus.mall.ware.service.PurchaseService;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.R;
/**
* 采购信息
*
* @author alatus
* @email 1571345941@qq.com
* @date 2024-03-12 14:08:46
*/
@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
@Autowired
private PurchaseService purchaseService;
/**
* 完成采购单
*/
@PostMapping("/done")
public R finish(@RequestBody PurchaseDoneVo doneVo){
purchaseService.done(doneVo);
return R.ok();
}
/**
* 领取采购单
*/
@PostMapping("/received")
public R Received(@RequestBody List<Long> ids){
purchaseService.received(ids);
return R.ok();
}
/**
* 未被领取的采购单
*/
@GetMapping("/unreceive/list")
public R unReceiveList(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPageUnReceive(params);
return R.ok().put("page", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPage(params);
return R.ok().put("page", page);
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
PurchaseEntity purchase = purchaseService.getById(id);
return R.ok().put("purchase", purchase);
}
/**
* 保存
*/
@RequestMapping("/save")
public R save(@RequestBody PurchaseEntity purchase){
purchase.setCreateTime(new Date());
purchase.setUpdateTime(new Date());
purchaseService.save(purchase);
return R.ok();
}
/**
* 合并到整单
*/
@PostMapping("/merge")
public R Merge(@RequestBody MergeVo mergeVo){
purchaseService.mergePurchase(mergeVo);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody PurchaseEntity purchase){
purchaseService.updateById(purchase);
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
purchaseService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}
package com.alatus.mall.ware.service.impl;
import com.alatus.common.constant.WareConstant;
import com.alatus.mall.ware.entity.PurchaseDetailEntity;
import com.alatus.mall.ware.service.PurchaseDetailService;
import com.alatus.mall.ware.service.WareSkuService;
import com.alatus.mall.ware.vo.MergeVo;
import com.alatus.mall.ware.vo.PurchaseDoneVo;
import com.alatus.mall.ware.vo.PurchaseItemDoneVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.Query;
import com.alatus.mall.ware.dao.PurchaseDao;
import com.alatus.mall.ware.entity.PurchaseEntity;
import com.alatus.mall.ware.service.PurchaseService;
import org.springframework.transaction.annotation.Transactional;
@Service("purchaseService")
public class PurchaseServiceImpl extends ServiceImpl<PurchaseDao, PurchaseEntity> implements PurchaseService {
@Autowired
private PurchaseDetailService purchaseDetailService;
@Autowired
private WareSkuService wareSkuService;
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<PurchaseEntity> page = this.page(
new Query<PurchaseEntity>().getPage(params),
new QueryWrapper<PurchaseEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPageUnReceive(Map<String, Object> params) {
IPage<PurchaseEntity> page = this.page(
new Query<PurchaseEntity>().getPage(params),
new QueryWrapper<PurchaseEntity>().eq("status",0).or().eq("status",1)
);
return new PageUtils(page);
}
@Override
@Transactional
public void mergePurchase(MergeVo mergeVo) {
Long purchaseId = mergeVo.getPurchaseId();
if(purchaseId == null){
PurchaseEntity purchaseEntity = new PurchaseEntity();
purchaseEntity.setStatus(WareConstant.PurchaseStatusEnum.CREATED.getCode());
purchaseEntity.setCreateTime(new Date());
purchaseEntity.setUpdateTime(new Date());
this.save(purchaseEntity);
purchaseId = purchaseEntity.getId();
}
// TODO 确认采购单状态是0或者1才可以合并
List<Long> items = mergeVo.getItems();
Long finalPurchaseId = purchaseId;
List<PurchaseDetailEntity> detailEntities = items.stream().map(item -> {
PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
detailEntity.setPurchaseId(finalPurchaseId);
detailEntity.setId(item);
detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.ASSIGNED.getCode());
return detailEntity;
}).collect(Collectors.toList());
purchaseDetailService.updateBatchById(detailEntities);
PurchaseEntity purchaseEntity = new PurchaseEntity();
purchaseEntity.setId(purchaseId);
purchaseEntity.setCreateTime(new Date());
purchaseEntity.setUpdateTime(new Date());
this.updateById(purchaseEntity);
}
@Override
public void received(List<Long> ids) {
// 确认要领取的采购单是新建或是已分配状态
List<PurchaseEntity> purchaseEntities = ids.stream().map(id -> {
PurchaseEntity purchaseEntity = this.getById(id);
return purchaseEntity;
}).filter(purchaseEntity -> {
if(purchaseEntity.getStatus() == WareConstant.PurchaseStatusEnum.CREATED.getCode() ||
purchaseEntity.getStatus() == WareConstant.PurchaseStatusEnum.ASSIGNED.getCode()){
return true;
}
return false;
}).map(purchaseEntity -> {
purchaseEntity.setStatus(WareConstant.PurchaseStatusEnum.RECEIVED.getCode());
purchaseEntity.setUpdateTime(new Date());
return purchaseEntity;
}).collect(Collectors.toList());
// 改变采购单的状态
this.updateBatchById(purchaseEntities);
// 改变采购项的状态
purchaseEntities.forEach((item) -> {
List<PurchaseDetailEntity> entities = purchaseDetailService.listDetailByPurchaseId(item.getId());
List<PurchaseDetailEntity> detailEntities = entities.stream().map(purchaseDetailEntity -> {
PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
detailEntity.setId(purchaseDetailEntity.getId());
detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.BUYING.getCode());
return detailEntity;
}).collect(Collectors.toList());
purchaseDetailService.updateBatchById(detailEntities);
});
}
@Override
@Transactional
public void done(PurchaseDoneVo doneVo) {
// 改变采购单状态
Long id = doneVo.getId();
// 改变采购项状态
boolean flag = true;
List<PurchaseItemDoneVo> items = doneVo.getItems();
List<PurchaseDetailEntity> purchaseDetailEntities = new ArrayList<>();
for (PurchaseItemDoneVo item : items) {
PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
if(item.getStatus() == WareConstant.PurchaseDetailStatusEnum.HAS_ERROR.getCode()){
flag = false;
detailEntity.setStatus(item.getStatus());
}
else{
detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.FINISHED.getCode());
// 将采购成功的入库
PurchaseDetailEntity entity = purchaseDetailService.getById(item.getItemId());
wareSkuService.addStock(entity.getSkuId(),entity.getWareId(),entity.getSkuNum());
}
// 获取并设置采购需求的ID
detailEntity.setId(item.getItemId());
purchaseDetailEntities.add(detailEntity);
}
// 将采购成功的进行入库
purchaseDetailService.updateBatchById(purchaseDetailEntities);
// 改变采购单的状态
PurchaseEntity purchaseEntity = new PurchaseEntity();
purchaseEntity.setId(id);
purchaseEntity.setStatus(flag?WareConstant.PurchaseStatusEnum.FINISHED.getCode() :
WareConstant.PurchaseStatusEnum.HAS_ERROR.getCode());
purchaseEntity.setUpdateTime(new Date());
this.updateById(purchaseEntity);
}
}
package com.alatus.mall.ware.service.impl;
import com.alatus.common.constant.WareConstant;
import com.alatus.mall.ware.entity.PurchaseDetailEntity;
import com.alatus.mall.ware.service.PurchaseDetailService;
import com.alatus.mall.ware.service.WareSkuService;
import com.alatus.mall.ware.vo.MergeVo;
import com.alatus.mall.ware.vo.PurchaseDoneVo;
import com.alatus.mall.ware.vo.PurchaseItemDoneVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.Query;
import com.alatus.mall.ware.dao.PurchaseDao;
import com.alatus.mall.ware.entity.PurchaseEntity;
import com.alatus.mall.ware.service.PurchaseService;
import org.springframework.transaction.annotation.Transactional;
@Service("purchaseService")
public class PurchaseServiceImpl extends ServiceImpl<PurchaseDao, PurchaseEntity> implements PurchaseService {
@Autowired
private PurchaseDetailService purchaseDetailService;
@Autowired
private WareSkuService wareSkuService;
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<PurchaseEntity> page = this.page(
new Query<PurchaseEntity>().getPage(params),
new QueryWrapper<PurchaseEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPageUnReceive(Map<String, Object> params) {
IPage<PurchaseEntity> page = this.page(
new Query<PurchaseEntity>().getPage(params),
new QueryWrapper<PurchaseEntity>().eq("status",0).or().eq("status",1)
);
return new PageUtils(page);
}
@Override
@Transactional
public void mergePurchase(MergeVo mergeVo) {
Long purchaseId = mergeVo.getPurchaseId();
if(purchaseId == null){
PurchaseEntity purchaseEntity = new PurchaseEntity();
purchaseEntity.setStatus(WareConstant.PurchaseStatusEnum.CREATED.getCode());
purchaseEntity.setCreateTime(new Date());
purchaseEntity.setUpdateTime(new Date());
this.save(purchaseEntity);
purchaseId = purchaseEntity.getId();
}
// TODO 确认采购单状态是0或者1才可以合并
List<Long> items = mergeVo.getItems();
Long finalPurchaseId = purchaseId;
List<PurchaseDetailEntity> detailEntities = items.stream().map(item -> {
PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
detailEntity.setPurchaseId(finalPurchaseId);
detailEntity.setId(item);
detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.ASSIGNED.getCode());
return detailEntity;
}).collect(Collectors.toList());
purchaseDetailService.updateBatchById(detailEntities);
PurchaseEntity purchaseEntity = new PurchaseEntity();
purchaseEntity.setId(purchaseId);
purchaseEntity.setCreateTime(new Date());
purchaseEntity.setUpdateTime(new Date());
this.updateById(purchaseEntity);
}
@Override
public void received(List<Long> ids) {
// 确认要领取的采购单是新建或是已分配状态
List<PurchaseEntity> purchaseEntities = ids.stream().map(id -> {
PurchaseEntity purchaseEntity = this.getById(id);
return purchaseEntity;
}).filter(purchaseEntity -> {
if(purchaseEntity.getStatus() == WareConstant.PurchaseStatusEnum.CREATED.getCode() ||
purchaseEntity.getStatus() == WareConstant.PurchaseStatusEnum.ASSIGNED.getCode()){
return true;
}
return false;
}).map(purchaseEntity -> {
purchaseEntity.setStatus(WareConstant.PurchaseStatusEnum.RECEIVED.getCode());
purchaseEntity.setUpdateTime(new Date());
return purchaseEntity;
}).collect(Collectors.toList());
// 改变采购单的状态
this.updateBatchById(purchaseEntities);
// 改变采购项的状态
purchaseEntities.forEach((item) -> {
List<PurchaseDetailEntity> entities = purchaseDetailService.listDetailByPurchaseId(item.getId());
List<PurchaseDetailEntity> detailEntities = entities.stream().map(purchaseDetailEntity -> {
PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
detailEntity.setId(purchaseDetailEntity.getId());
detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.BUYING.getCode());
return detailEntity;
}).collect(Collectors.toList());
purchaseDetailService.updateBatchById(detailEntities);
});
}
@Override
@Transactional
public void done(PurchaseDoneVo doneVo) {
// 改变采购单状态
Long id = doneVo.getId();
// 改变采购项状态
boolean flag = true;
List<PurchaseItemDoneVo> items = doneVo.getItems();
List<PurchaseDetailEntity> purchaseDetailEntities = new ArrayList<>();
for (PurchaseItemDoneVo item : items) {
PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
if(item.getStatus() == WareConstant.PurchaseDetailStatusEnum.HAS_ERROR.getCode()){
flag = false;
detailEntity.setStatus(item.getStatus());
}
else{
detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.FINISHED.getCode());
// 将采购成功的入库
PurchaseDetailEntity entity = purchaseDetailService.getById(item.getItemId());
wareSkuService.addStock(entity.getSkuId(),entity.getWareId(),entity.getSkuNum());
}
// 获取并设置采购需求的ID
detailEntity.setId(item.getItemId());
purchaseDetailEntities.add(detailEntity);
}
// 将采购成功的进行入库
purchaseDetailService.updateBatchById(purchaseDetailEntities);
// 改变采购单的状态
PurchaseEntity purchaseEntity = new PurchaseEntity();
purchaseEntity.setId(id);
purchaseEntity.setStatus(flag?WareConstant.PurchaseStatusEnum.FINISHED.getCode() :
WareConstant.PurchaseStatusEnum.HAS_ERROR.getCode());
purchaseEntity.setUpdateTime(new Date());
this.updateById(purchaseEntity);
}
}
package com.alatus.mall.ware.service.impl;
import com.alatus.common.utils.R;
import com.alatus.mall.ware.feign.ProductFeignService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.Query;
import com.alatus.mall.ware.dao.WareSkuDao;
import com.alatus.mall.ware.entity.WareSkuEntity;
import com.alatus.mall.ware.service.WareSkuService;
@Service("wareSkuService")
public class WareSkuServiceImpl extends ServiceImpl<WareSkuDao, WareSkuEntity> implements WareSkuService {
@Autowired
private WareSkuDao wareSkuDao;
@Autowired
private ProductFeignService productFeignService;
@Override
public PageUtils queryPage(Map<String, Object> params) {
QueryWrapper<WareSkuEntity> queryWrapper = new QueryWrapper<>();
String skuId = (String) params.get("skuId");
if(!StringUtils.isEmpty(skuId)){
queryWrapper.eq("sku_id",skuId);
}
String wareId = (String) params.get("wareId");
if(!StringUtils.isEmpty(skuId)){
queryWrapper.eq("ware_id",wareId);
}
IPage<WareSkuEntity> page = this.page(
new Query<WareSkuEntity>().getPage(params),
queryWrapper
);
return new PageUtils(page);
}
@Override
public void addStock(Long skuId, Long wareId, Integer skuNum) {
// 判断是否存在这个库存记录,没有执行新增操作
List<WareSkuEntity> wareSkuEntities = wareSkuDao.selectList(new QueryWrapper<WareSkuEntity>().eq("sku_id", skuId).eq("ware_id", wareId));
if(wareSkuEntities == null || wareSkuEntities.size() == 0){
WareSkuEntity wareSkuEntity = new WareSkuEntity();
wareSkuEntity.setSkuId(skuId);
wareSkuEntity.setWareId(wareId);
wareSkuEntity.setStock(skuNum);
wareSkuEntity.setStockLocked(0);
// TODO 远程查询SKU的名字,如果失败,整个事务无需回滚
// 自己catch掉这个异常
try{
R info = productFeignService.info(skuId);
if(info.getCode() == 0){
Map<String,Object> data = (Map<String, Object>) info.get("skuInfo");
wareSkuEntity.setSkuName((String) data.get("skuName"));
}
}catch (Exception e){
e.printStackTrace();
}
wareSkuDao.insert(wareSkuEntity);
}else{
wareSkuDao.addStock(skuId,wareId,skuNum);
}
}
}
package com.alatus.mall.ware.service.impl;
import com.alatus.common.utils.R;
import com.alatus.mall.ware.feign.ProductFeignService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.Query;
import com.alatus.mall.ware.dao.WareSkuDao;
import com.alatus.mall.ware.entity.WareSkuEntity;
import com.alatus.mall.ware.service.WareSkuService;
@Service("wareSkuService")
public class WareSkuServiceImpl extends ServiceImpl<WareSkuDao, WareSkuEntity> implements WareSkuService {
@Autowired
private WareSkuDao wareSkuDao;
@Autowired
private ProductFeignService productFeignService;
@Override
public PageUtils queryPage(Map<String, Object> params) {
QueryWrapper<WareSkuEntity> queryWrapper = new QueryWrapper<>();
String skuId = (String) params.get("skuId");
if(!StringUtils.isEmpty(skuId)){
queryWrapper.eq("sku_id",skuId);
}
String wareId = (String) params.get("wareId");
if(!StringUtils.isEmpty(skuId)){
queryWrapper.eq("ware_id",wareId);
}
IPage<WareSkuEntity> page = this.page(
new Query<WareSkuEntity>().getPage(params),
queryWrapper
);
return new PageUtils(page);
}
@Override
public void addStock(Long skuId, Long wareId, Integer skuNum) {
// 判断是否存在这个库存记录,没有执行新增操作
List<WareSkuEntity> wareSkuEntities = wareSkuDao.selectList(new QueryWrapper<WareSkuEntity>().eq("sku_id", skuId).eq("ware_id", wareId));
if(wareSkuEntities == null || wareSkuEntities.size() == 0){
WareSkuEntity wareSkuEntity = new WareSkuEntity();
wareSkuEntity.setSkuId(skuId);
wareSkuEntity.setWareId(wareId);
wareSkuEntity.setStock(skuNum);
wareSkuEntity.setStockLocked(0);
// TODO 远程查询SKU的名字,如果失败,整个事务无需回滚
// 自己catch掉这个异常
try{
R info = productFeignService.info(skuId);
if(info.getCode() == 0){
Map<String,Object> data = (Map<String, Object>) info.get("skuInfo");
wareSkuEntity.setSkuName((String) data.get("skuName"));
}
}catch (Exception e){
e.printStackTrace();
}
wareSkuDao.insert(wareSkuEntity);
}else{
wareSkuDao.addStock(skuId,wareId,skuNum);
}
}
}
package com.alatus.mall.ware.dao;
import com.alatus.mall.ware.entity.WareSkuEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 商品库存
*
* @author alatus
* @email 1571345941@qq.com
* @date 2024-03-12 14:08:46
*/
@Mapper
public interface WareSkuDao extends BaseMapper<WareSkuEntity> {
void addStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("skuNum") Integer skuNum);
}
package com.alatus.mall.ware.dao;
import com.alatus.mall.ware.entity.WareSkuEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 商品库存
*
* @author alatus
* @email 1571345941@qq.com
* @date 2024-03-12 14:08:46
*/
@Mapper
public interface WareSkuDao extends BaseMapper<WareSkuEntity> {
void addStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("skuNum") Integer skuNum);
}