@Transactional
@Override
public void done(PurchaseDoneVo doneVo) {
//1.改变采购项的状态
Boolean flag = true;
List<PurchaseItemDoneVo> items = doneVo.getItems();
List<PurchaseDetailEntity> updates = new ArrayList<>();
for (PurchaseItemDoneVo item : items){
PurchaseDetailEntity purchaseDetailEntity = new PurchaseDetailEntity();
if (item.getStatus() == WareConstant.PurchaseDetailStatusEnum.HASERROR.getCode()){
flag = false;
purchaseDetailEntity.setStatus(item.getStatus());
}else{
purchaseDetailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.FINISHED.getCode());
//2.将成功采购的进行入库
PurchaseDetailEntity entity = purchaseDetailService.getById(item.getItemId());
wareSkuService.addStock(entity.getId(),entity.getWareId(),entity.getSkuNum());
}
purchaseDetailEntity.setId(item.getItemId());
updates.add(purchaseDetailEntity);
}
purchaseDetailService.updateBatchById(updates);
//3.改变采购单状态
PurchaseEntity purchaseEntity = new PurchaseEntity();
purchaseEntity.setId(doneVo.getId());
purchaseEntity.setStatus(flag ? WareConstant.PurchaseStatusEnum.FINISHED.getCode()
: WareConstant.PurchaseStatusEnum.HASERROR.getCode());
purchaseEntity.setUpdateTime(new Date());
this.updateById(purchaseEntity);
}
@Override
public void addStock(Long skuId, Long wareId, Integer skuNum) {
//判断库存中有没有这个sku,如果没有就新建,有就入库
List<WareSkuEntity> entities = wareSkuDao.selectList(
new QueryWrapper<WareSkuEntity>().eq("sku_id", skuId).eq("ware_id", wareId));
if (entities == null || entities.size()==0){
WareSkuEntity wareSkuEntity = new WareSkuEntity();
wareSkuEntity.setSkuId(skuId);
wareSkuEntity.setWareId(wareId);
wareSkuEntity.setStock(skuNum);
this.baseMapper.insert(wareSkuEntity);
}else {
wareSkuDao.addStock(skuId,wareId,skuNum);
}
}
测试:
增加功能:远程调用商品服务
拿PurchaseDetailEntity的id当成skuId了
改一下:
再测
终于对了~~~~~~