Spring Boot农产品溯源管理系统设计与实现

一、系统概述

随着消费者对食品安全的关注不断加深,农产品溯源管理系统应运而生。该系统旨在追溯农产品的生产、加工、运输及销售各个环节的信息,确保消费者能够获取详细的产品信息,提高食品安全意识。本文将介绍基于Spring Boot框架设计与实现的农产品溯源管理系统,并提供部分源码示例。

二、系统架构

该系统主要由以下几个模块组成:

  1. 用户管理模块:管理系统用户及其权限。
  2. 农产品信息模块:记录农产品的基本信息及其溯源信息。
  3. 数据统计模块:对农产品的销售情况进行统计分析。
  4. 前端展示模块:展示农产品的信息及其溯源路径。

三、开发环境

  • JDK 11+
  • Spring Boot 2.x
  • MySQL 5.7+
  • Maven
  • Thymeleaf(前端模板引擎)

四、数据库设计

数据库设计主要包含两个表:product(农产品信息表)和user(用户信息表)。

product 表结构如下:

CREATE TABLE product (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    origin VARCHAR(255) NOT NULL,
    dateProduced DATE NOT NULL,
    processedBy VARCHAR(255),
    transportDetails TEXT,
    salesDetails TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

user 表结构如下:

CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    role VARCHAR(50) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

五、后端实现

1. 项目结构

使用Maven构建项目,项目结构如下:

src
└── main
    ├── java
    │   └── com
    │       └── example
    │           └── farmtrace
    │               ├── controller
    │               │   └── ProductController.java
    │               ├── entity
    │               │   ├── Product.java
    │               │   └── User.java
    │               ├── repository
    │               │   ├── ProductRepository.java
    │               │   └── UserRepository.java
    │               └── service
    │                   ├── ProductService.java
    │                   └── UserService.java
    └── resources
        ├── application.yml
        └── templates
            └── products.html

2. 实体类

Product实体类示例:

package com.example.farmtrace.entity;

import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name = "product")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private String origin;
    @Temporal(TemporalType.DATE)
    private Date dateProduced;
    private String processedBy;
    private String transportDetails;
    private String salesDetails;

    // Getters and Setters
}

3. 数据访问层

ProductRepository接口示例:

package com.example.farmtrace.repository;

import com.example.farmtrace.entity.Product;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Integer> {
}

4. 服务层

ProductService类示例:

package com.example.farmtrace.service;

import com.example.farmtrace.entity.Product;
import com.example.farmtrace.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService {
    @Autowired
    private ProductRepository productRepository;

    public List<Product> findAll() {
        return productRepository.findAll();
    }

    public void save(Product product) {
        productRepository.save(product);
    }

    public Product findById(Integer id) {
        return productRepository.findById(id).orElse(null);
    }
}

5. 控制器层

ProductController类示例:

package com.example.farmtrace.controller;

import com.example.farmtrace.entity.Product;
import com.example.farmtrace.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class ProductController {
    @Autowired
    private ProductService productService;

    @GetMapping("/products")
    public String listProducts(Model model) {
        model.addAttribute("products", productService.findAll());
        return "products";
    }

    @PostMapping("/products")
    public String addProduct(Product product) {
        productService.save(product);
        return "redirect:/products";
    }
}

六、前端实现

使用Thymeleaf作为前端模板引擎,products.html示例:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>农产品列表</title>
</head>
<body>
    <h1>农产品列表</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>名称</th>
            <th>产地</th>
            <th>生产日期</th>
            <th>操作</th>
        </tr>
        <tr th:each="product : ${products}">
            <td th:text="${product.id}"></td>
            <td th:text="${product.name}"></td>
            <td th:text="${product.origin}"></td>
            <td th:text="${product.dateProduced}"></td>
            <td><a th:href="@{/edit/{id}(id=${product.id})}">编辑</a></td>
        </tr>
    </table>
    <form action="#" th:action="@{/products}" method="post">
        <input type="text" name="name" placeholder="产品名称" required>
        <input type="text" name="origin" placeholder="产地" required>
        <input type="date" name="dateProduced" required>
        <input type="submit" value="添加产品">
    </form>
</body>
</html>

七、总结

通过以上设计,我们实现了一个简单的农产品溯源管理系统。用户可以通过系统录入农产品信息,并通过前端界面展示溯源信息。这一系统可以有效提升农产品的透明度和可信度,为消费者提供更安全的购买环境。未来,我们可以进一步扩展系统功能,例如增加数据分析模块,提升用户体验等。希望本文能够为相关开发者提供参考与帮助。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部