1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Flat-White-ocms

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Система управления расходными материалами для офиса


✨Интерфейсы


Главное меню

image-20210619224146923


Вход в систему

image-20210619224203489

image-20210619224216393


Выбор модулей функциональности

image-20210619224223128


Утверждение

image-20210619224351794

image-20210619224357746

image-20210619224408952


Управление сотрудниками

image-20210619224420114

image-20210619224425642

image-20210619224452866


Управление расходными материалами

image-20210619224510121

image-20210619224515210

image-20210619224536641

image-20210619224547193

image-20210619225542299

image-20210619225552401


✨Настройка проекта

/**
 * @author Flat-White
 */

Основная среда разработки

  • MySQL 5.7

  • JDK 1.8

  • MyBatis

  • JFormDesigner (GUI)


Maven зависимости```xml

<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>
```
### Конфигурация MyBatis
<?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 )

Вы можете оставить комментарий после Вход в систему

Введение

Система управления офисными расходными материалами (Mybatis + Swing) Задание по базам данных. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Flat-White-ocms.git
git@api.gitlife.ru:oschina-mirror/Flat-White-ocms.git
oschina-mirror
Flat-White-ocms
Flat-White-ocms
master