基于若依的车间设备管理系统实现 一. 数据库设计1. 设备表deviceCREATE TABLE device ( id bigint NOT NULL AUTO_INCREMENT COMMENT 主键ID, device_code varchar(100) NOT NULL COMMENT 设备编号, temperature int DEFAULT NULL COMMENT 设备温度, dept_id bigint NOT NULL COMMENT 所属部门ID, del_flag char(1) DEFAULT 0 COMMENT 删除标志0代表存在 2代表删除, create_by varchar(64) DEFAULT COMMENT 创建者, create_time datetime DEFAULT NULL COMMENT 创建时间, update_by varchar(64) DEFAULT COMMENT 更新者, update_time datetime DEFAULT NULL COMMENT 更新时间, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT设备信息表;2. 数据初始化INSERT INTO device (device_code, temperature, dept_id, del_flag) VALUES (zhengYiTing_001, 41, 105, 0), (zhengYiTing_002, 39, 105, 0), (zhengYiTing_003, 45, 106, 0);二. 后端实现Spring Boot MyBatis1. 实体类Device.javaD:\ruoyi\RuoYi-Vue-v3.8.2\ruoyi-system\src\main\java\com\ruoyi\system\domain\Device.javapackage com.ruoyi.system.domain; import com.ruoyi.common.core.domain.BaseEntity; public class Device extends BaseEntity { private static final long serialVersionUID 1L; private Long id; private String deviceCode; private Integer temperature; private Long deptId; private String delFlag; // Getter和Setter方法 public Long getId() { return id; } public void setId(Long id) { this.id id; } public String getDeviceCode() { return deviceCode; } public void setDeviceCode(String deviceCode) { this.deviceCode deviceCode; } public Integer getTemperature() { return temperature; } public void setTemperature(Integer temperature) { this.temperature temperature; } public Long getDeptId() { return deptId; } public void setDeptId(Long deptId) { this.deptId deptId; } public String getDelFlag() { return delFlag; } public void setDelFlag(String delFlag) { this.delFlag delFlag; } }2. Mapper 接口DeviceMapper.javaD:\ruoyi\RuoYi-Vue-v3.8.2\ruoyi-system\src\main\java\com\ruoyi\system\mapper\DeviceMapper.javapackage com.ruoyi.system.mapper; import com.ruoyi.system.domain.Device; import java.util.List; public interface DeviceMapper { ListDevice selectDeviceList(Device device); }3. Mapper XMLDeviceMapper.xmlD:\ruoyi\RuoYi-Vue-v3.8.2\ruoyi-system\src\main\resources\mapper\system\DeviceMapper.xml?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.ruoyi.system.mapper.DeviceMapper resultMap typeDevice idDeviceResult id propertyid columnid/ result propertydeviceCode columndevice_code/ result propertytemperature columntemperature/ result propertydeptId columndept_id/ result propertydelFlag columndel_flag/ /resultMap select idselectDeviceList parameterTypeDevice resultMapDeviceResult select * from device where del_flag 0 if testdeptId ! null and dept_id #{deptId} /if /where /select /mapper4. Service 层DeviceService.java和DeviceServiceImpl.java接口类DeviceService.javaD:\ruoyi\RuoYi-Vue-v3.8.2\ruoyi-system\src\main\java\com\ruoyi\system\service\DeviceService.javapackage com.ruoyi.system.service; import com.ruoyi.system.domain.Device; import java.util.List; public interface DeviceService { ListDevice selectDeviceList(Device device); }实现类DeviceServiceImpl.java核心权限控制逻辑D:\ruoyi\RuoYi-Vue-v3.8.2\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\DeviceServiceImpl.javapackage com.ruoyi.system.service.impl; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.domain.Device; import com.ruoyi.system.mapper.DeviceMapper; import com.ruoyi.system.service.DeviceService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; Service public class DeviceServiceImpl implements DeviceService { Resource private DeviceMapper deviceMapper; Override public ListDevice selectDeviceList(Device device) { // 管理员admin不过滤部门 if (SecurityUtils.isAdmin(SecurityUtils.getUserId())) { return deviceMapper.selectDeviceList(device); } // 普通用户设置当前用户的部门ID作为查询条件 Long deptId SecurityUtils.getLoginUser().getUser().getDeptId(); device.setDeptId(deptId); return deviceMapper.selectDeviceList(device); } }5. Controller 层DeviceController.javaD:\ruoyi\RuoYi-Vue-v3.8.2\ruoyi-admin\src\main\java\com\ruoyi\web\controller\system\DeviceController.javapackage com.ruoyi.web.controller.system; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.system.domain.Device; import com.ruoyi.system.service.DeviceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; RestController RequestMapping(/system/device) public class DeviceController extends BaseController { Autowired private DeviceService deviceService; GetMapping(/list) public TableDataInfo list(Device device) { startPage(); ListDevice list deviceService.selectDeviceList(device); return getDataTable(list); } }三. 前端实现Vue1. 菜单配置在若依系统的菜单管理中添加设备管理菜单路由地址为/device组件路径为system/device/index。2. 用户与部门关联创建用户时将用户归属到对应部门创建新用户zhengyiting加入财务部门示例zhengyiting用户归属财务部门ID:106ry用户归属测试部门ID:1053. 页面效果不同用户登录后只能看到本部门的设备数据admin用户能看到全部ry用户部门 105只能看到zhengYiTing_001和zhengYiTing_002zhengyiting用户部门 106只能看到zhengYiTing_003dept_id ? 是 JDBC 预编译占位符MyBatis 会自动把当前登录用户的部门ID填进去实现“普通用户只看自己部门、admin看全部”的数据权限隔离同时防止SQL注入。