基于springboot的仓库管理系统

博主主页猫头鹰源码

博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

文末联系获取

项目介绍: 

该系统采用Java语言,使用springboot技术,mysql数据库,具有完整的业务逻辑。适合选题:仓库、仓库管理、仓库维护、仓库数据统计等,

系统包含技术:

后端:SpringBoot+MyBatisPlus、shiro
前端:Layui,js,css等
开发工具:idea
数据库:mysql 5.7
JDK版本:jdk1.8

部分截图说明:

下面是登陆页面

 登陆后进入首页,可以看到公告信息,还有库存预警信息

客户管理页面

商品管理页面

 供应商管理

 如果库存不够,需要进货

查看退货信息

销售商品查看

部门管理

菜单管理

 系统公告

部分代码:

商品维护

 /**
     * 查询商品
     * @param goodsVo
     * @return
     */
    @RequestMapping("loadAllGoods")
    public DataGridView loadAllGoods(GoodsVo goodsVo){
        IPage<Goods> page = new Page<Goods>(goodsVo.getPage(),goodsVo.getLimit());
        QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
        queryWrapper.eq(goodsVo.getProviderid()!=null&&goodsVo.getProviderid()!=0,"providerid",goodsVo.getProviderid());
        queryWrapper.like(StringUtils.isNotBlank(goodsVo.getGoodsname()),"goodsname",goodsVo.getGoodsname());
        queryWrapper.like(StringUtils.isNotBlank(goodsVo.getProductcode()),"productcode",goodsVo.getProductcode());
        queryWrapper.like(StringUtils.isNotBlank(goodsVo.getPromitcode()),"promitcode",goodsVo.getPromitcode());
        queryWrapper.like(StringUtils.isNotBlank(goodsVo.getDescription()),"description",goodsVo.getDescription());
        queryWrapper.like(StringUtils.isNotBlank(goodsVo.getSize()),"size",goodsVo.getSize());

        queryWrapper.orderByDesc("id");
        goodsService.page(page,queryWrapper);
        List<Goods> records = page.getRecords();
        for (Goods goods : records) {
            Provider provider = providerService.getById(goods.getProviderid());
            if (null!=provider){
                goods.setProvidername(provider.getProvidername());
            }
        }
        return new DataGridView(page.getTotal(),page.getRecords());
    }

    /**
     * 添加商品
     * @param goodsVo
     * @return
     */
    @RequestMapping("addGoods")
    public ResultObj addGoods(GoodsVo goodsVo){
        try {
            System.out.println("====================================");
            System.out.println(goodsVo.getGoodsimg());
            if (goodsVo.getGoodsimg()!=null&&goodsVo.getGoodsimg().endsWith("_temp")){
                String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg());
                goodsVo.setGoodsimg(newName);
            }
            goodsService.save(goodsVo);
            return ResultObj.ADD_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.ADD_ERROR;
        }
    }

    /**
     * 修改商品
     * @param goodsVo
     * @return
     */
    @RequestMapping("updateGoods")
    public ResultObj updateGoods(GoodsVo goodsVo){
        try {
            //商品图片不是默认图片
            if (!(goodsVo.getGoodsimg()!=null&&goodsVo.getGoodsimg().equals(Constast.DEFAULT_IMG_GOODS))){

                if (goodsVo.getGoodsimg().endsWith("_temp")){
                    String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg());
                    goodsVo.setGoodsimg(newName);
                    //删除原先的图片
                    String oldPath = goodsService.getById(goodsVo.getId()).getGoodsimg();
                    AppFileUtils.removeFileByPath(oldPath);
                }
            }
            goodsService.updateById(goodsVo);
            return ResultObj.UPDATE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.UPDATE_ERROR;
        }
    }

    /**
     * 删除商品
     * @param id 商品id
     * @return
     */
    @RequestMapping("deleteGoods")
    public ResultObj deleteGoods(Integer id,String goodsimg){
        try {
            //删除商品的图片
            AppFileUtils.removeFileByPath(goodsimg);
//            goodsService.removeById(id);
            goodsService.deleteGoodsById(id);
            return ResultObj.DELETE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.DELETE_ERROR;
        }
    }

    /**
     * 加载所有可用的商品
     * @return
     */
    @RequestMapping("loadAllGoodsForSelect")
    public DataGridView loadAllGoodsForSelect(){
        QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
        queryWrapper.eq("available",Constast.AVAILABLE_TRUE);
        List<Goods> list = goodsService.list(queryWrapper);
        for (Goods goods : list) {
            Provider provider = providerService.getById(goods.getProviderid());
            if (null!=provider){
                goods.setProvidername(provider.getProvidername());
            }
        }
        return new DataGridView(list);
    }

    /**
     * 根据供应商ID查询商品信息
     * @param providerid    供应商ID
     * @return
     */
    @RequestMapping("loadGoodsByProviderId")
    public DataGridView loadGoodsByProviderId(Integer providerid){
        QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
        queryWrapper.eq("available",Constast.AVAILABLE_TRUE);
        queryWrapper.eq(providerid!=null,"providerid",providerid);
        List<Goods> list = goodsService.list(queryWrapper);
        for (Goods goods : list) {
            Provider provider = providerService.getById(goods.getProviderid());
            if (null!=provider){
                goods.setProvidername(provider.getProvidername());
            }
        }
        return new DataGridView(list);
    }

    @RequestMapping("loadAllWarningGoods")
    public DataGridView loadAllWarningGoods(){
        List<Goods> goods = goodsService.loadAllWarning();
        return new DataGridView((long) goods.size(),goods);
    }

以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

实现仓库管理系统的出入库功能,可以分为以下几个步骤: 1. 创建数据库表 根据业务需求,创建相应的数据库表,如仓库表、货物表、出入库记录表等。 2. 定义数据模型 在 Java 中定义相应的数据模型,如仓库、货物、出入库记录等。 3. 编写 DAO 层 使用 Spring Data JPA 或者 MyBatis 等工具编写 DAO 层,实现对数据库的增删改查操作。 4. 编写 Service 层 在 Service 层中实现业务逻辑,并调用 DAO 层提供的方法进行数据操作。 5. 编写 Controller 层 使用 Spring MVC 或者其他框架编写 Controller 层,接收前端请求并调用 Service 层提供的方法进行业务处理,最后返回响应结果。 下面是一个简单的示例: 1. 创建数据库表 ```sql CREATE TABLE warehouse ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, address VARCHAR(100) NOT NULL ); CREATE TABLE goods ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, type VARCHAR(50) NOT NULL, quantity INT NOT NULL, warehouse_id INT NOT NULL, FOREIGN KEY (warehouse_id) REFERENCES warehouse(id) ); CREATE TABLE stock_record ( id INT PRIMARY KEY AUTO_INCREMENT, goods_id INT NOT NULL, warehouse_id INT NOT NULL, type VARCHAR(10) NOT NULL, quantity INT NOT NULL, time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (goods_id) REFERENCES goods(id), FOREIGN KEY (warehouse_id) REFERENCES warehouse(id) ); ``` 2. 定义数据模型 Warehouse.java ```java @Entity @Table(name = "warehouse") public class Warehouse { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private String address; // getter and setter } ``` Goods.java ```java @Entity @Table(name = "goods") public class Goods { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private String type; private Integer quantity; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "warehouse_id") private Warehouse warehouse; // getter and setter } ``` StockRecord.java ```java @Entity @Table(name = "stock_record") public class StockRecord { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "goods_id") private Goods goods; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "warehouse_id") private Warehouse warehouse; private String type; private Integer quantity; private Date time; // getter and setter } ``` 3. 编写 DAO 层 WarehouseRepository.java ```java @Repository public interface WarehouseRepository extends JpaRepository<Warehouse, Integer> { } ``` GoodsRepository.java ```java @Repository public interface GoodsRepository extends JpaRepository<Goods, Integer> { List<Goods> findByWarehouseId(Integer warehouseId); } ``` StockRecordRepository.java ```java @Repository public interface StockRecordRepository extends JpaRepository<StockRecord, Integer> { List<StockRecord> findByGoodsId(Integer goodsId); List<StockRecord> findByWarehouseId(Integer warehouseId); } ``` 4. 编写 Service 层 WarehouseService.java ```java @Service @Transactional public class WarehouseService { @Autowired private WarehouseRepository warehouseRepository; public List<Warehouse> findAll() { return warehouseRepository.findAll(); } public Warehouse findById(Integer id) { return warehouseRepository.findById(id).orElse(null); } public void save(Warehouse warehouse) { warehouseRepository.save(warehouse); } public void deleteById(Integer id) { warehouseRepository.deleteById(id); } } ``` GoodsService.java ```java @Service @Transactional public class GoodsService { @Autowired private GoodsRepository goodsRepository; public List<Goods> findAll() { return goodsRepository.findAll(); } public Goods findById(Integer id) { return goodsRepository.findById(id).orElse(null); } public void save(Goods goods) { goodsRepository.save(goods); } public void deleteById(Integer id) { goodsRepository.deleteById(id); } public List<Goods> findByWarehouseId(Integer warehouseId) { return goodsRepository.findByWarehouseId(warehouseId); } } ``` StockRecordService.java ```java @Service @Transactional public class StockRecordService { @Autowired private StockRecordRepository stockRecordRepository; public void save(StockRecord stockRecord) { stockRecordRepository.save(stockRecord); } public List<StockRecord> findByGoodsId(Integer goodsId) { return stockRecordRepository.findByGoodsId(goodsId); } public List<StockRecord> findByWarehouseId(Integer warehouseId) { return stockRecordRepository.findByWarehouseId(warehouseId); } } ``` 5. 编写 Controller 层 WarehouseController.java ```java @RestController @RequestMapping("/api/warehouse") public class WarehouseController { @Autowired private WarehouseService warehouseService; @GetMapping("/") public List<Warehouse> findAll() { return warehouseService.findAll(); } @GetMapping("/{id}") public Warehouse findById(@PathVariable("id") Integer id) { return warehouseService.findById(id); } @PostMapping("/") public void save(@RequestBody Warehouse warehouse) { warehouseService.save(warehouse); } @DeleteMapping("/{id}") public void deleteById(@PathVariable("id") Integer id) { warehouseService.deleteById(id); } } ``` GoodsController.java ```java @RestController @RequestMapping("/api/goods") public class GoodsController { @Autowired private GoodsService goodsService; @GetMapping("/") public List<Goods> findAll() { return goodsService.findAll(); } @GetMapping("/{id}") public Goods findById(@PathVariable("id") Integer id) { return goodsService.findById(id); } @PostMapping("/") public void save(@RequestBody Goods goods) { goodsService.save(goods); } @DeleteMapping("/{id}") public void deleteById(@PathVariable("id") Integer id) { goodsService.deleteById(id); } @GetMapping("/warehouse/{id}") public List<Goods> findByWarehouseId(@PathVariable("id") Integer warehouseId) { return goodsService.findByWarehouseId(warehouseId); } } ``` StockRecordController.java ```java @RestController @RequestMapping("/api/stock-record") public class StockRecordController { @Autowired private StockRecordService stockRecordService; @PostMapping("/") public void save(@RequestBody StockRecord stockRecord) { stockRecordService.save(stockRecord); } @GetMapping("/goods/{id}") public List<StockRecord> findByGoodsId(@PathVariable("id") Integer goodsId) { return stockRecordService.findByGoodsId(goodsId); } @GetMapping("/warehouse/{id}") public List<StockRecord> findByWarehouseId(@PathVariable("id") Integer warehouseId) { return stockRecordService.findByWarehouseId(warehouseId); } } ``` 这样,一个基于 Spring Boot仓库管理系统出入库功能就实现了。你可以根据自己的业务需求,对上述代码进行修改和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫头鹰源码(同名B站)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值