库存欠缺入库测试

This commit is contained in:
2024-11-06 14:50:00 +08:00
parent 57a88d5959
commit 660b2ca640
14 changed files with 278 additions and 81 deletions

View File

@@ -87,6 +87,18 @@ public class SysOaOutWarehouseController extends BaseController {
return iSysOaOutWarehouseService.queryWarehouseIdList(WarehouseId);
}
/**
* 查询仓库出库产品id的列表
*
* @param projectId 出库产品id
*/
@SaCheckPermission("oa:oaOutWarehouse:query")
@GetMapping("/project/{projectId}")
public TableDataInfo<SysOaOutWarehouseVo> queryOutWarehouseByProjectId(@NotNull(message = "项目名不能为空")
@PathVariable Long projectId) {
return iSysOaOutWarehouseService.queryOutWarehouseByProjectId(projectId);
}
/**

View File

@@ -5,6 +5,8 @@ import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.mapper.SysOaTaskMapper;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
@@ -40,6 +42,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
public class SysOaProjectController extends BaseController {
private final ISysOaProjectService iSysOaProjectService;
private final SysOaTaskMapper sysOaTaskMapper;
/**
@@ -113,4 +116,13 @@ public class SysOaProjectController extends BaseController {
});
return toAjax(iSysOaProjectService.deleteWithValidByIds(Arrays.asList(projectIds), true));
}
/**
* 查询项目是否存在出库记录
*/
@SaCheckPermission("oa:project:list")
@GetMapping("/outWare/list")
public TableDataInfo<SysOaOutWarehouseListVo> outWareList(SysOaOutWarehouseBo bo, PageQuery pageQuery) {
return iSysOaProjectService.queryOutWarePageList(bo, pageQuery);
}
}

View File

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.util.List;
/**
@@ -16,21 +17,11 @@ import lombok.Data;
@ExcelIgnoreUnannotated
public class SysOaOutWarehouseListVo {
/**
* 主键id
*/
private Long id;
/**
* 出库后对应的项目id
*/
private Long projectId;
/**
* 出库数量
*/
private Long amount;
/**
* 项目名称
@@ -38,19 +29,13 @@ public class SysOaOutWarehouseListVo {
private String projectName;
/**
* 出库备注
* 出库
*/
private String remark;
private List<SysOaOutWarehouseVo> outWarehouseVoList;
/**
* 出库对象id
*/
private Long warehouseId;
/**
* 出库物料名称
*/
private String warehouseName;
}

View File

@@ -2,6 +2,7 @@ package com.ruoyi.oa.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
@@ -14,7 +15,7 @@ import lombok.Data;
*/
@Data
@ExcelIgnoreUnannotated
public class SysOaOutWarehouseVo {
public class SysOaOutWarehouseVo extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -48,5 +49,11 @@ public class SysOaOutWarehouseVo {
@ExcelProperty(value = "出库对象id")
private Long warehouseId;
/** 库存物料名 */
private String warehouseName;
/** 项目名 */
private String projectName;
}

View File

@@ -23,7 +23,7 @@ public interface SysOaOutWarehouseMapper extends BaseMapperPlus<SysOaOutWarehous
/**
* 仓库出库筛选(联查)
*/
List<SysOaOutWarehouseListVo> defineselectList(@Param(value = "bo") SysOaOutWarehouseBo bo, @Param(value = "page") PageQuery pageQuery);
List<SysOaOutWarehouseListVo> defineSelectList(@Param(value = "bo") SysOaOutWarehouseBo bo, @Param(value = "page") PageQuery pageQuery);
}

View File

@@ -1,9 +1,16 @@
package com.ruoyi.oa.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.oa.domain.SysOaOutWarehouse;
import com.ruoyi.oa.domain.SysOaProject;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
/**
* 项目管理Mapper接口
@@ -13,4 +20,6 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
*/
public interface SysOaProjectMapper extends BaseMapperPlus<SysOaProjectMapper, SysOaProject, SysOaProjectVo> {
Page<SysOaOutWarehouseListVo> selectPageOutList(@Param("page") Page<SysOaOutWarehouseListVo> page,@Param(Constants.WRAPPER) Wrapper<SysOaProject> queryWrapper);
}

View File

@@ -8,6 +8,7 @@ import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import javax.validation.constraints.NotNull;
import java.util.Collection;
import java.util.List;
@@ -62,4 +63,6 @@ public interface ISysOaOutWarehouseService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
TableDataInfo<SysOaOutWarehouseVo> queryOutWarehouseByProjectId(@NotNull(message = "项目名不能为空") Long projectId);
}

View File

@@ -1,6 +1,7 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.SysOaProject;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -46,4 +47,6 @@ public interface ISysOaProjectService {
* 校验并批量删除项目管理信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
TableDataInfo<SysOaOutWarehouseListVo> queryOutWarePageList(SysOaOutWarehouseBo bo, PageQuery pageQuery);
}

View File

@@ -2,6 +2,7 @@ package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -16,7 +17,9 @@ import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBoList;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.mapper.SysOaProjectMapper;
import com.ruoyi.oa.mapper.SysOaWarehouseMapper;
import com.ruoyi.oa.service.ISysOaWarehouseService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseVo;
@@ -43,7 +46,13 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
private final SysOaOutWarehouseMapper baseMapper;
private final SysOaWarehouseMapper baseMapper2;
@Autowired
private SysOaWarehouseMapper warehouseMapper;
@Autowired
private SysOaProjectMapper projectMapper;
/**
* 查询仓库出库
@@ -63,6 +72,9 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
public TableDataInfo<SysOaOutWarehouseVo> queryWarehouseIdList(Long WarehouseId) {
LambdaQueryWrapper<SysOaOutWarehouse> lqw = Wrappers.lambdaQuery();
lqw.eq(SysOaOutWarehouse::getWarehouseId, WarehouseId);
for (SysOaOutWarehouseVo sysOaOutWarehouseVo : baseMapper.selectVoList(lqw)) {
sysOaOutWarehouseVo.setWarehouseName( warehouseMapper.selectById(sysOaOutWarehouseVo.getWarehouseId()).getName());
}
return TableDataInfo.build(baseMapper.selectVoList(lqw));
}
@@ -74,6 +86,12 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
public TableDataInfo<SysOaOutWarehouseListVo> queryPageList(SysOaOutWarehouseBo bo, PageQuery pageQuery) {
// LambdaQueryWrapper<SysOaOutWarehouse> lqw = buildQueryWrapper(bo);
// Page<SysOaOutWarehouseVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// for (SysOaOutWarehouseVo record : result.getRecords()) {
// record.setWarehouseName(warehouseMapper.selectVoById(record.getWarehouseId()).getName());
// record.setProjectName(warehouseMapper.selectVoById(record.getProjectId()).getName());
// }
// TODO 这么写分页失效
pageQuery.setPageNum(ObjectUtil.defaultIfNull(pageQuery.getPageNum(), 1));
pageQuery.setPageSize(ObjectUtil.defaultIfNull(pageQuery.getPageSize(), Integer.MAX_VALUE));
if (pageQuery.getPageNum() <= 0) {
@@ -83,7 +101,11 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
pageQuery.setPageSize(Integer.MAX_VALUE);
}
pageQuery.setPageNum((pageQuery.getPageNum() - 1)*pageQuery.getPageSize());
List<SysOaOutWarehouseListVo> result = baseMapper.defineselectList(bo, pageQuery);
List<SysOaOutWarehouseListVo> result = baseMapper.defineSelectList(bo, pageQuery);
// IPage<SysOaOutWarehouseListVo> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
// page.setRecords(result);
// page.setTotal()
return TableDataInfo.build(result);
}
@@ -114,7 +136,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
public Boolean insertByBo(SysOaOutWarehouseBo bo) {
SysOaOutWarehouse decrease = toBean(bo, SysOaOutWarehouse.class);
validEntityBeforeSave(decrease);
SysOaWarehouse warehouse = baseMapper2.selectById(decrease.getWarehouseId());
SysOaWarehouse warehouse = warehouseMapper.selectById(decrease.getWarehouseId());
// 1 如果对应仓库表项目数量-将要出库数量<0出库失败, 繁殖 增加该条
if(warehouse == null) {
throw new Error("已不存在该物料"+decrease.getWarehouseId());
@@ -124,7 +146,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
}
else {
warehouse.setInventory(warehouse.getInventory() - decrease.getAmount());
baseMapper2.updateById(warehouse);
warehouseMapper.updateById(warehouse);
}
// 2、减少仓库表中对应项目的数量
@@ -170,7 +192,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
//找出库存表对应的那条数据 的库存数量
LambdaQueryWrapper<SysOaWarehouse> lqw = Wrappers.lambdaQuery();
lqw.eq(SysOaWarehouse::getId, update.getWarehouseId());
SysOaWarehouse warehouse = baseMapper2.selectOne(lqw);
SysOaWarehouse warehouse = warehouseMapper.selectOne(lqw);
Long inventory = warehouse.getInventory();
//出库多了
@@ -180,7 +202,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
//可以减少差值
baseMapper.updateById(update);
warehouse.setInventory(inventory -( amount1 - amount));
baseMapper2.updateById(warehouse);
warehouseMapper.updateById(warehouse);
}
else {
throw new Error("库存数量不足,无法增加出库数量");
@@ -192,7 +214,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
//此时增加差值
baseMapper.updateById(update);
warehouse.setInventory(warehouse.getInventory() + amount - amount1);
baseMapper2.updateById(warehouse);
warehouseMapper.updateById(warehouse);
}
else {
throw new Error("出库数量不能为负");
@@ -230,15 +252,31 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
//选出相对应的 库存表中那一条的数据
LambdaQueryWrapper<SysOaWarehouse> lqw2 = Wrappers.lambdaQuery();
lqw2.eq(SysOaWarehouse::getId, sysOaOutWarehouse.getWarehouseId());
SysOaWarehouse warehouse = baseMapper2.selectOne(lqw2);
SysOaWarehouse warehouse = warehouseMapper.selectOne(lqw2);
// 恢复原本出库的数量
warehouse.setInventory(warehouse.getInventory() + sysOaOutWarehouse.getAmount());
baseMapper2.updateById(warehouse);
warehouseMapper.updateById(warehouse);
});
boolean flag = baseMapper.deleteBatchIds(ids) > 0;
return flag;
}
/**
* 根据项目id查出库
* @param projectId
* @return
*/
@Override
public TableDataInfo<SysOaOutWarehouseVo> queryOutWarehouseByProjectId(Long projectId) {
LambdaQueryWrapper<SysOaOutWarehouse> lqw = Wrappers.lambdaQuery();
lqw.eq(SysOaOutWarehouse::getProjectId, projectId);
List<SysOaOutWarehouseVo> sysOaOutWarehouseVos = baseMapper.selectVoList(lqw);
for (SysOaOutWarehouseVo sysOaOutWarehouseVo :sysOaOutWarehouseVos) {
sysOaOutWarehouseVo.setWarehouseName(warehouseMapper.selectById(sysOaOutWarehouseVo.getWarehouseId()).getName());
}
return TableDataInfo.build(sysOaOutWarehouseVos);
}
}

View File

@@ -1,13 +1,15 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.SysOaContract;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
@@ -111,4 +113,25 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 查询项目出库记录
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<SysOaOutWarehouseListVo> queryOutWarePageList(SysOaOutWarehouseBo bo, PageQuery pageQuery) {
Page<SysOaOutWarehouseListVo> page = baseMapper.selectPageOutList(pageQuery.build(), this.buildOutWareQueryWrapper(bo));
return TableDataInfo.build(page);
}
private QueryWrapper<SysOaProject> buildOutWareQueryWrapper(SysOaOutWarehouseBo bo) {
QueryWrapper<SysOaProject> lqw = Wrappers.query();
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
lqw.eq(StringUtils.isNotBlank(bo.getWarehouseName()), "sow.name", bo.getWarehouseName());
lqw.orderByDesc("sop.create_time");
return lqw;
}
}