柜体出库查询某产品列表开发完成,修正出库业务逻辑

This commit is contained in:
刘宗坤
2024-11-03 15:03:24 +08:00
parent 8f95164c28
commit 256952f0cb
3 changed files with 53 additions and 32 deletions

View File

@@ -39,6 +39,8 @@ public class SysOaOutWarehouseController extends BaseController {
private final ISysOaOutWarehouseService iSysOaOutWarehouseService; private final ISysOaOutWarehouseService iSysOaOutWarehouseService;
/** /**
* 查询仓库出库列表 * 查询仓库出库列表
*/ */
@@ -71,6 +73,20 @@ public class SysOaOutWarehouseController extends BaseController {
return R.ok(iSysOaOutWarehouseService.queryById(id)); return R.ok(iSysOaOutWarehouseService.queryById(id));
} }
/**
* 查询仓库出库产品id的列表
*
* @param WarehouseId 出库产品id
*/
@SaCheckPermission("oa:oaOutWarehouse:query")
@GetMapping("/WarehouseIdList/{WarehouseId}")
public TableDataInfo<SysOaOutWarehouseVo> ListByWarehouseId(@NotNull(message = "出库产品ID不能为空")
@PathVariable Long WarehouseId) {
return iSysOaOutWarehouseService.queryWarehouseIdList(WarehouseId);
}
/** /**
* 新增仓库出库 * 新增仓库出库
*/ */

View File

@@ -22,6 +22,13 @@ public interface ISysOaOutWarehouseService {
*/ */
SysOaOutWarehouseVo queryById(Long id); SysOaOutWarehouseVo queryById(Long id);
/**
* 查询仓库出库产品id的列表
*
* @param WarehouseId 出库产品id
*/
TableDataInfo<SysOaOutWarehouseVo> queryWarehouseIdList(Long WarehouseId);
/** /**
* 查询仓库出库列表 * 查询仓库出库列表
*/ */
@@ -46,4 +53,7 @@ public interface ISysOaOutWarehouseService {
* 校验并批量删除仓库出库信息 * 校验并批量删除仓库出库信息
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
} }

View File

@@ -43,6 +43,20 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
return baseMapper.selectVoById(id); return baseMapper.selectVoById(id);
} }
/**
* 查询仓库出库产品id的列表
*
* @param WarehouseId 出库产品id
*/
@Override
public TableDataInfo<SysOaOutWarehouseVo> queryWarehouseIdList(Long WarehouseId) {
LambdaQueryWrapper<SysOaOutWarehouse> lqw = Wrappers.lambdaQuery();
lqw.eq(SysOaOutWarehouse::getWarehouseId, WarehouseId);
return TableDataInfo.build(baseMapper.selectVoList(lqw));
}
/** /**
* 查询仓库出库列表 * 查询仓库出库列表
*/ */
@@ -76,41 +90,20 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
*/ */
@Override @Override
public Boolean insertByBo(SysOaOutWarehouseBo bo) { public Boolean insertByBo(SysOaOutWarehouseBo bo) {
SysOaOutWarehouse add = BeanUtil.toBean(bo, SysOaOutWarehouse.class); SysOaOutWarehouse decrease = BeanUtil.toBean(bo, SysOaOutWarehouse.class);
validEntityBeforeSave(add); validEntityBeforeSave(decrease);
// 1、查询出库表中是否已存在该项目的出库记录 SysOaWarehouse warehouse = baseMapper2.selectById(decrease.getWarehouseId());
LambdaQueryWrapper<SysOaOutWarehouse> lqw = buildQueryWrapper(bo); // 1 如果对应仓库表项目数量-将要出库数量<0出库失败, 繁殖 增加该条
lqw.eq( SysOaOutWarehouse::getWarehouseId, add.getWarehouseId()); if(warehouse.getInventory() - decrease.getAmount() < 0) {
SysOaOutWarehouse sysOaOutWarehouse = baseMapper.selectOne(lqw); throw new Error("剩余数量不足,出库失败");
// 2、查询结果为空不为空 则 增加该条的出库数量,或者查询结果为空 则 添加一条
// 3、删除仓库表中对应项目 ,如果对应仓库表项目数量-出库数量<0出库失败, 反之,成功,则进行项目数量减少的更新
SysOaWarehouse warehouse = baseMapper2.selectById(add.getWarehouseId());
boolean flag;
if(sysOaOutWarehouse != null){
sysOaOutWarehouse.setAmount(sysOaOutWarehouse.getAmount()+add.getAmount());
if(warehouse.getInventory() - sysOaOutWarehouse.getAmount() < 0) {
throw new Error("剩余数量不足,出库失败");
}
else {
warehouse.setInventory(warehouse.getInventory() - sysOaOutWarehouse.getAmount());
baseMapper2.updateById(warehouse);
}
flag = baseMapper.updateById(sysOaOutWarehouse) > 0;
} }
else { else {
if(warehouse.getInventory() - add.getAmount() < 0) { warehouse.setInventory(warehouse.getInventory() - decrease.getAmount());
throw new Error("剩余数量不足,出库失败"); baseMapper2.updateById(warehouse);
}
else {
warehouse.setInventory(warehouse.getInventory() - add.getAmount());
baseMapper2.updateById(warehouse);
}
flag = baseMapper.insert(add) > 0;
} }
// if (flag) {
// bo.setId(add.getId()); // 2、减少仓库表中对应项目的数量
// } return baseMapper.insert(decrease) > 0;
return flag;
} }
/** /**
@@ -140,4 +133,6 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
} }
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
} }