Слияние кода завершено, страница обновится автоматически
/**
* @author Flat-White
*/
MySQL 5.7
JDK 1.8
MyBatis
JFormDesigner (GUI)
<dependencies>
<!-- драйвер mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
<!-- commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<package name="com.ocms.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.ocms.dao"/>
</mappers>
</configuration>
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;
``````java
/**
* @author Flat-White
*/
public interface AdminMapper {
/**
* Вход администратора
* @param map adminAccount adminPasswd
* @return Объект Admin
*/
Admin adminLogin(Map<String, Object> map);
/**
* Получение ID сотрудника по ID заявки
* @param map applyId
* @return ID сотрудника
*/
int adminGetStaIdByApplyId(Map<String, Object> map);
/**
* Подтверждение заявки
* @param map applyId adminId applyNote
* @return Успешное изменение -> 1 / неудачное -> 0
*/
int adminAgreeApply(Map<String, Object> map);
/**
* Отклонение заявки
* @param map applyId adminId applyNote
* @return Успешное изменение -> 1 / неудачное -> 0
*/
int adminRejectApply(Map<String, Object> map);
}
package com.ocms.service;
import com.ocms.pojo.Apply;
import com.ocms.pojo.Staff;
import com.ocms.pojo.Consume;
import java.util.List;
import java.util.Map;
/**
*
*/
public interface AdminService {
/**
* Шифрование пароля администратора
* @return шифрование успешно -> 1 / неудача -> 0
*/
int adminEncryptPasswd();
/**
* Получение списка всех заявок
* @return список заявок
*/
List<Apply> adminListApply();
/**
* Администратор получает список обработанных заявок
* @return список заявок
*/
List<Apply> adminGetTreatApply();
/**
* Администратор получает список непроцессированных заявок
* @return список заявок
*/
List<Apply> adminGetUnTreatApply();
/**
* Получение информации о заявке конкретного сотрудника
* @param map staName
* @return объект заявки
*/
List<Apply> adminGetApplyByStaName(Map<String, Object> map);
/**
* Получение списка всех сотрудников
* @return список сотрудников
*/
List<Staff> adminListStaff();
}
``````markdown
## Методы API
### Интерфейс администратора
```java
package com.ocms.service;
import java.util.List;
import java.util.Map;
/**
* Интерфейс для управления сотрудниками и расходными материалами
*/
public interface AdminService {
/**
* Обновление информации о сотруднике
* @param map staId staName staDept staTele
* @return успешное обновление -> 1 / неудача -> 0
*/
int adminUpdateStaff(Map<String, Object> map);
/**
* Добавление нового сотрудника
* @param map staName staDept staTele
* @return успешное добавление -> 1 / неудача -> 0
*/
int adminInsertStaff(Map<String, Object> map);
/**
* Удаление сотрудника
* @param map staId
* @return успешное удаление -> 1 / неудача -> 0
*/
int adminDeleteStaff(Map<String, Object> map);
/**
* Получение списка всех расходных материалов
* @return список расходных материалов
*/
List<Consume> adminListConsume();
/**
* Обновление количества расходных материалов
* @param map conId conName conNum conFactory
* @return успешное обновление -> 1 / неудача -> 0
*/
int adminUpdateConsume(Map<String, Object> map);
/**
* Добавление новой расходной материала
* @param map conName conNum conFactory
* @return успешное добавление -> 1 / неудача -> 0
*/
int adminInsertConsume(Map<String, Object> map);
/**
* Удаление расходной материала
* @param map conId
* @return успешное удаление -> 1 / неудача -> 0
*/
int adminDeleteConsume(Map<String, Object> map);
}
package com.ocms.dao;
import com.ocms.pojo.Apply;
import com.ocms.pojo.Staff;
import java.util.List;
import java.util.Map;
/**
* Интерфейс для работы с сотрудниками
*/
public interface StaffMapper {
/**
* Получение списка всех сотрудников
* @return список сотрудников
*/
List<Staff> staffListStaff();
/**
* Получение информации о сотруднике по имени
* @param map staName
* @return объект сотрудника
*/
Staff staffGetStaffByStaName(Map<String, Object> map);
}
``````java
/**
* Submission of an application
* @param map staId conTime applyName applyNum
* @return success of the application submission success->1 / fail -> 0
*/
int staffSubmitApply(Map<String, Object> map);
/**
* Checking the status of an application
* @param map staId
* @return list of applications
*/
List<Apply> staffQueryApply(Map<String, Object> map);
}
/*
Navicat Premium Data Transfer
Source Server : dbms
Source Server Type : MySQL
Source Server Version : Method and version information
Source Host : localhost:3306
Source Schema : ocms
Target Server Type : MySQL
Target Server Version : Method and version information
File Encoding : UTF-8
Date: 19/05/2021 00:43:07
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Structure of table 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;
```-- ----------------------------
-- Записи в таблице 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;
-- ----------------------------
-- Структура таблицы 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;
-- ----------------------------
-- Записи таблицы 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;-- ----------------------------
-- Структура таблицы 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;-- ----------------------------
-- Записи таблицы 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;
-- ----------------------------
-- Структура таблицы `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;
-- ----------------------------
-- Записи таблицы 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, 'Third employee of the Human Resources Department', 'Human Resources Department', '888');
COMMIT;-- ----------------------------
-- Триггеры для таблицы 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 ; -- ----------------------------
-- Структура триггеров для таблицы 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 ; -- ----------------------------
-- Триггеры для таблицы 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 ; -- ----------------------------
-- Триггеры для таблицы 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;
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )