# ocms
**Repository Path**: Flat-White/ocms
## Basic Information
- **Project Name**: ocms
- **Description**: 办公室耗材管理系统(Mybatis + Swing)
数据库大作业。
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2021-05-21
- **Last Updated**: 2022-11-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: GUI
## README
# 办公室耗材管理系统
## ✨界面展示
### 主界面

### 登录界面


### 选择功能模块

### 审核



### 员工管理



### 耗材管理






## ✨项目配置
```java
/**
* @author Flat-White
*/
```
### 开发环境
- MySQL5.7
- jdk1.8
- Mybatis
- JFormDesigner(GUI)
### maven依赖
```xml
mysql
mysql-connector-java
5.1.49
org.mybatis
mybatis
3.5.7
junit
junit
3.8.2
test
org.apache.commons
commons-lang3
3.12.0
```
### mybatis-config
```xml
```
## ✨Admin端功能概述
### 登陆
### 审核
- 同意申请
- 拒绝申请
### 查看申请情况
- 查询所有申请情况
- 查询未处理申请
- 查询某员工领用情况
### 员工管理
- 查询所有员工信息
- 修改员工信息
- 新增员工
- 删除员工
### 耗材管理
- 查询所有耗材信息
- 修改耗材信息
- 新增耗材
- 删除耗材
## ✨接口总览
### Admin interface
```java
package com.ocms.dao;
import com.ocms.pojo.Admin;
import com.ocms.pojo.Apply;
import com.ocms.pojo.Consume;
import com.ocms.pojo.Staff;
import java.util.List;
import java.util.Map;
/**
* @author Flat-White
*/
public interface AdminMapper {
/**
* 管理员登陆
* @param map adminAccount adminPasswd
* @return Admin Object
*/
Admin adminLogin(Map map);
/**
* 管理员获取apply中相应的staId
* @param map staId
* @return staId
*/
int adminGetStaIdByApplyId(Map map);
/**
* 管理员同意申请
* @param map applyId adminId applyNote
* @return update success->1 / fail -> 0
*/
int adminAgreeApply(Map map);
/**
* 管理员拒绝申请
* @param map applyId adminId applyNote
* @return update success->1 / fail -> 0
*/
int adminRejectApply(Map map);
/**
* 管理员加密密码
* @return encrypt success->1 / fail -> 0
*/
int adminEncryptPasswd();
/**
* 查询所有申请情况
* @return Apply list
*/
List adminListApply();
/**
* 管理员查询已处理申请
* @return Apply List
*/
List adminGetTreatApply();
/**
* 管理员查询未处理申请
* @return Apply List
*/
List adminGetUnTreatApply();
/**
* 查询某员工申请情况
* @param map staName
* @return Apply Object
*/
List adminGetApplyByStaName(Map map);
/**
* 查询所有员工信息
* @return Staff list
*/
List adminListStaff();
/**
* 修改员工信息
* @param map staId staName staDept staTele
* @return update success->1 / fail -> 0
*/
int adminUpdateStaff(Map map);
/**
* 增加员工
* @param map staName staDept staTele
* @return add success->1 / fail -> 0
*/
int adminInsertStaff(Map map);
/**
* 删除员工
* @param map staId
* @return del success->1 / fail -> 0
*/
int adminDeleteStaff(Map map);
/**
* 查询所有耗材信息
* @return Consume list
*/
List adminListConsume();
/**
* 修改耗材数量
* @param map conId conName conNum conFactory
* @return update success->1 / fail -> 0
*/
int adminUpdateConsume(Map map);
/**
* 新增耗材
* @param map conName conNum conFactory
* @return add success->1 / fail -> 0
*/
int adminInsertConsume(Map map);
/**
* 删除耗材
* @param map conId
* @return del success->1 / fail -> 0
*/
int adminDeleteConsume(Map map);
}
```
### Staff interface
```java
package com.ocms.dao;
import com.ocms.pojo.Apply;
import com.ocms.pojo.Staff;
import java.util.List;
import java.util.Map;
/**
* @author Flat-White
*/
public interface StaffMapper {
/**
* 查询所有员工信息
* @return Staff list
*/
List staffListStaff();
/**
* 查询某个员工信息
* @param map staName
* @return Staff Object
*/
Staff staffGetStaffByStaName(Map map);
/**
* 提交申请
* @param map staId conTime applyName applyNum
* @return apply success->1 / fail -> 0
*/
int staffSubmitApply(Map map);
/**
* 查询审核情况
* @param map staId
* @return Apply list
*/
List staffQueryApply(Map map);
}
```
## ✨建库SQL
```mysql
/*
Navicat Premium Data Transfer
Source Server : dbms
Source Server Type : MySQL
Source Server Version : 50731
Source Host : localhost:3306
Source Schema : ocms
Target Server Type : MySQL
Target Server Version : 50731
File Encoding : 65001
Date: 19/05/2021 00:43:07
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for admin
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
`admin_id` int(11) NOT NULL AUTO_INCREMENT,
`admin_account` varchar(30) NOT NULL,
`admin_passwd` char(50) NOT NULL,
PRIMARY KEY (`admin_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
-- ----------------------------
-- Records of admin
-- ----------------------------
BEGIN;
INSERT INTO `admin` VALUES (1, 'root', '63a9f0ea7bb98050796b649e85481845');
INSERT INTO `admin` VALUES (2, 'admin', '21232f297a57a5a743894a0e4a801fc3');
INSERT INTO `admin` VALUES (3, 'kali', 'd6ca3fd0c3a3b462ff2b83436dda495e');
INSERT INTO `admin` VALUES (4, 'ubuntu', '1d41c853af58d3a7ae54990ce29417d8');
COMMIT;
-- ----------------------------
-- Table structure for apply
-- ----------------------------
DROP TABLE IF EXISTS `apply`;
CREATE TABLE `apply` (
`apply_id` int(11) NOT NULL AUTO_INCREMENT,
`sta_id` int(11) NOT NULL,
`admin_id` int(11) DEFAULT NULL,
`con_id` int(11) NOT NULL,
`apply_time` datetime NOT NULL,
`con_time` datetime NOT NULL,
`apply_num` int(11) NOT NULL,
`apply_name` varchar(20) NOT NULL,
`apply_is_check` int(11) NOT NULL,
`apply_result` int(11) DEFAULT NULL,
`apply_note` varchar(100) DEFAULT NULL,
PRIMARY KEY (`apply_id`) USING BTREE,
KEY `FK_Apply` (`con_id`) USING BTREE,
KEY `FK_Apply2` (`sta_id`) USING BTREE,
KEY `FK_Apply3` (`admin_id`) USING BTREE,
CONSTRAINT `FK_Apply` FOREIGN KEY (`con_id`) REFERENCES `consume` (`con_id`),
CONSTRAINT `FK_Apply2` FOREIGN KEY (`sta_id`) REFERENCES `staff` (`sta_id`),
CONSTRAINT `FK_Apply3` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
-- ----------------------------
-- Records of apply
-- ----------------------------
BEGIN;
INSERT INTO `apply` VALUES (1, 1, NULL, 3, '2021-04-28 10:10:35', '2021-04-28 10:10:41', 10, '墨盒', 0, NULL, NULL);
INSERT INTO `apply` VALUES (2, 2, NULL, 5, '2021-04-28 10:12:15', '2021-04-28 10:12:21', 10, '复印纸', 0, NULL, NULL);
INSERT INTO `apply` VALUES (3, 1, NULL, 7, '2021-05-19 00:42:06', '2021-05-19 00:42:05', 20, '传真热敏纸', 0, NULL, NULL);
COMMIT;
-- ----------------------------
-- Table structure for consume
-- ----------------------------
DROP TABLE IF EXISTS `consume`;
CREATE TABLE `consume` (
`con_id` int(11) NOT NULL AUTO_INCREMENT,
`con_name` varchar(20) NOT NULL,
`con_num` int(11) NOT NULL,
`con_factory` varchar(50) NOT NULL,
`con_indate` datetime NOT NULL,
`con_is_replenish` int(11) NOT NULL,
PRIMARY KEY (`con_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
-- ----------------------------
-- Records of consume
-- ----------------------------
BEGIN;
INSERT INTO `consume` VALUES (1, '硒鼓', 50, '知名硒鼓生产厂', '2021-04-27 22:40:12', 0);
INSERT INTO `consume` VALUES (2, '粉仓', 50, '知名粉仓生产厂', '2021-04-27 22:40:59', 0);
INSERT INTO `consume` VALUES (3, '墨盒', 50, '知名墨盒生产厂', '2021-04-27 22:41:30', 0);
INSERT INTO `consume` VALUES (4, '碳带', 50, '知名碳带生产厂', '2021-04-27 22:42:21', 0);
INSERT INTO `consume` VALUES (5, '复印纸', 50, '知名复印纸生产厂', '2021-04-27 22:43:00', 0);
INSERT INTO `consume` VALUES (6, '彩喷纸', 50, '知名彩喷纸生产厂', '2021-04-27 22:43:28', 0);
INSERT INTO `consume` VALUES (7, '传真热敏纸', 50, '知名传真热敏纸生产厂', '2021-04-27 22:43:52', 0);
INSERT INTO `consume` VALUES (8, '高光相纸', 50, '知名高光相纸生产厂', '2021-04-27 22:44:28', 0);
INSERT INTO `consume` VALUES (9, '绘图纸', 50, '知名绘图纸生产厂', '2021-04-27 22:44:56', 0);
INSERT INTO `consume` VALUES (10, '硫酸纸', 50, '知名硫酸纸生产厂', '2021-04-27 22:45:21', 0);
COMMIT;
-- ----------------------------
-- Table structure for staff
-- ----------------------------
DROP TABLE IF EXISTS `staff`;
CREATE TABLE `staff` (
`sta_id` int(11) NOT NULL AUTO_INCREMENT,
`sta_name` varchar(20) NOT NULL,
`sta_dept` varchar(20) NOT NULL,
`sta_tele` char(20) NOT NULL,
PRIMARY KEY (`sta_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
-- ----------------------------
-- Records of staff
-- ----------------------------
BEGIN;
INSERT INTO `staff` VALUES (1, '仓库管理员', '仓库', '000000');
INSERT INTO `staff` VALUES (2, '总裁', '行政部', '666666');
INSERT INTO `staff` VALUES (3, '董事长', '行政部', '666666');
INSERT INTO `staff` VALUES (4, 'CEO', '行政部', '666666');
INSERT INTO `staff` VALUES (5, '摸鱼产品一号职工', '产品部', '111');
INSERT INTO `staff` VALUES (6, '划水产品二号职工', '产品部', '111');
INSERT INTO `staff` VALUES (7, '摸鱼设计一号职工', '设计部', '222');
INSERT INTO `staff` VALUES (8, '划水设计二号职工', '设计部', '666');
INSERT INTO `staff` VALUES (9, '摸鱼技术一号职工', '技术部', '222');
INSERT INTO `staff` VALUES (10, '划水技术二号职工', '技术部', '333');
INSERT INTO `staff` VALUES (11, '不摸鱼技术三号', '技术部', '444');
INSERT INTO `staff` VALUES (12, '不划水技术四号职工', '技术部', '444');
INSERT INTO `staff` VALUES (13, '摸鱼市场一号职工', '市场部', '444');
INSERT INTO `staff` VALUES (14, '划水市场二号职工', '市场部', '444');
INSERT INTO `staff` VALUES (15, '绝不摸鱼财务一号职工', '财务部', '555');
INSERT INTO `staff` VALUES (16, '必不划水财务二号职工', '财务部', '555');
INSERT INTO `staff` VALUES (17, '整天摸鱼人力一号职工', '人力部', '777');
INSERT INTO `staff` VALUES (18, '想要放假人力二号职工', '人力部', '777');
INSERT INTO `staff` VALUES (19, '快被解雇人力三号职工', '人力部', '888');
COMMIT;
-- ----------------------------
-- Triggers structure for table consume
-- ----------------------------
DROP TRIGGER IF EXISTS `before_insert_auto_check_replenish`;
delimiter ;;
CREATE TRIGGER `before_insert_auto_check_replenish` BEFORE INSERT ON `consume` FOR EACH ROW BEGIN
IF
( new.con_num < 10 ) THEN
SET new.con_is_replenish = 1;
END IF;
END
;;
delimiter ;
-- ----------------------------
-- Triggers structure for table consume
-- ----------------------------
DROP TRIGGER IF EXISTS `after_insert_auto_apply_replenish`;
delimiter ;;
CREATE TRIGGER `after_insert_auto_apply_replenish` AFTER INSERT ON `consume` FOR EACH ROW BEGIN
IF(new.con_is_replenish = 1) THEN
INSERT INTO apply
(sta_id, con_id, apply_time, con_time, apply_num, apply_name, apply_is_check)
SELECT 1, new.con_id, NOW(), NOW(), 50, new.con_name, 0
FROM staff, apply
WHERE staff.sta_id = apply.sta_id
LIMIT 1;
END IF;
END
;;
delimiter ;
-- ----------------------------
-- Triggers structure for table consume
-- ----------------------------
DROP TRIGGER IF EXISTS `before_update_auto_check_replenish`;
delimiter ;;
CREATE TRIGGER `before_update_auto_check_replenish` BEFORE UPDATE ON `consume` FOR EACH ROW BEGIN
IF
( new.con_num < 10 ) THEN
SET new.con_is_replenish = 1;
END IF;
END
;;
delimiter ;
-- ----------------------------
-- Triggers structure for table consume
-- ----------------------------
DROP TRIGGER IF EXISTS `after_update_auto_apply_replenish`;
delimiter ;;
CREATE TRIGGER `after_update_auto_apply_replenish` AFTER UPDATE ON `consume` FOR EACH ROW BEGIN
IF(new.con_is_replenish = 1) THEN
INSERT INTO apply
(sta_id, con_id, apply_time, con_time, apply_num, apply_name, apply_is_check)
SELECT 1, new.con_id, NOW(), NOW(), 50, new.con_name, 0
FROM staff, apply
WHERE staff.sta_id = apply.sta_id
LIMIT 1;
END IF;
END
;;
delimiter ;
SET FOREIGN_KEY_CHECKS = 1;
```