You are on page 1of 10

ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA TOÁN TIN

ĐỒ ÁN TỐT NGHIỆP
Phân tích và thiết kế hệ thống
Hóa đơn Điện tử theo Microserivce

LÊ NGỌC TÂN
tan.ln195912@sis.hust.edu.vn
Ngành Toán Tin
Chuyên sâu: Tin học

Giảng viên hướng dẫn: TS. Vũ Thành Nam

Chữ ký của GVHD


Bộ môn: Toán Tin

Viện: Toán ứng dụng và Tin học

HÀ NỘI, 01/2024
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

1. Mục tiêu và nội dung của đồ án:

(a) Mục tiêu: Tìm hiểu nghiệp vụ của Hóa đơn điện tử, phân tích và thiết kế
hệ thống tạo lập hóa đơn điện tử cho doanh nghiệp.
(b) Nội dung: Tìm hiểu và phân tích quy định của Cơ quan Thuế về việc tạo
lập hóa đơn điện tử. Phân tích nghiệp vụ thành các nghiệp vụ nhỏ hơn
để thiết kế các Vi dịch vụ. Thiết kế chi tiết các vi dịch vụ được thiết kế
và kế hoạch trỉển khai.

2. Kết quả đạt được:

(a) Thu thập được yêu cầu nghiệp vụ của Cơ quan thuế về các chủ thể
chịu tác động bởi quy định của Hoá đơn điện tử.
(b) Phân tích chủ thể sử dụng hệ thống và yều cầu tính năng.
(c) Phân tích và thiết kế hệ thống Hóa đơn điện tử bằng phương pháp
hướng miền.
(d) Kế hoạch triển khai hệ thống.
(e) Cài đặt một số luồng chức năng.

3. Ý thức làm việc của sinh viên: Tốt

Hà Nội, ngày .... tháng 01 năm 2024


Giảng viên hướng dẫn

TS. Vũ Thành Nam

ii
TÓM TẮT ĐỒ ÁN

Đồ án thực hiện viêc thu thập yêu cầu về Phát hành hóa đơn điện tử của Cơ quan
thuế đối với các đối tượng liên quan như: Đơn vị ủy quyền tạo hóa đơn, đơn vị tạo
hóa đơn, khách hàng sử dụng.

Xác định các đối tượng tác động đến hệ thống và xác định chức năng cần có theo
nghiệp vụ.

Phân chia và phân tích hệ thống theo hướng miền. Sau đó thiết kế từng dịch vụ
nhỏ xác định sau khi phân tích theo DDD.

Cuối cùng đưa ra phương án triển khai và cài đặt một số luồng hệ thống.

Hà Nội, ngày 23 tháng 1 năm 2024


Sinh viên thực hiện

Lê Ngọc Tân

iii
Mục lục

Mục lục iv

Danh sách thuật ngữ và từ viết tắt vii

Danh sách hình vẽ viii

Danh sách bảng x

Lời mở đầu 1

Chương 1 Tổng quan 2


1.1 Tổng quan đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Tình hình sử dụng hóa đơn điện tử . . . . . . . . . . . . . . . . . 2
1.3 Khó khăn trong việc triển khai Hóa đơn điện tử . . . . . . . . . . 3
1.4 Giải pháp triển khai Hóa đơn điện tử . . . . . . . . . . . . . . . . 3

Chương 2 Khảo sát yêu cầu nghiệp vụ 5


2.1 Yêu cầu của Cơ quan Thuế về Hóa đơn điện tử . . . . . . . . . . . 5
2.1.1 Yêu cầu của Cơ quan Thuế về đơn vị trung gian phát hành
hóa đơn điện tử. . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Yêu cầu của Cơ quan Thuế đối với chủ thể sử dụng Hóa
đơn điện tử. . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 Yêu cầu của Cơ quan Thuế về Hóa đơn điện tử. . . . . . . 6
2.1.4 Quy định về việc phát hành, thay thế, hủy bỏ và điều chỉnh
hóa đơn. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

Chương 3 Phân tích yêu cầu hệ thống 9


3.1 Phân rã Usecase . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Trường hợp sử dụng . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1 Trường hợp sử dụng đăng kí tài khoản của doanh nghiệp . 10
3.2.2 Trường hợp sử dụng thêm sản phẩm . . . . . . . . . . . . 11
3.2.3 Trường hợp sử dụng thêm khách hàng . . . . . . . . . . . 11
3.2.4 Trường hợp sử dụng phát hành kí hiệu hóa đơn . . . . . . 12
3.2.5 Trường hợp sử dụng phát hành hóa đơn . . . . . . . . . . 12
3.2.6 Trường hợp sử dụng phát hành hóa đơn thay thế . . . . . . 13

Chương 4 Thiết kế hệ thống hướng miền 14

iv
4.1 Phân tích nghiệp vụ chính (Domain). . . . . . . . . . . . . . . . . 14
4.2 Xác định ngữ cảnh (Bounder Content) . . . . . . . . . . . . . . . 15
4.2.1 Bounder Content Doanh nghiệp . . . . . . . . . . . . . . 16
4.2.2 Bounder Content Thông báo . . . . . . . . . . . . . . . . 16
4.2.3 Bounder Content Khách hàng . . . . . . . . . . . . . . . 16
4.2.4 Bounder Content Sản phẩm . . . . . . . . . . . . . . . . 16
4.2.5 Bounder Content Hóa đơn . . . . . . . . . . . . . . . . . 17
4.3 Phân tích các ngữ cảnh giới hạn . . . . . . . . . . . . . . . . . . 17
4.3.1 Phân tích Bounder Context Doanh nghiệp . . . . . . . . . 17
4.3.2 Phân tích Bounder Context Thông báo . . . . . . . . . . . 18
4.3.3 Phân tích Bounder Context Khách hàng . . . . . . . . . . 18
4.3.4 Phân tích Bounder Context Sản phẩm . . . . . . . . . . . 19
4.3.5 Phân tích Bounder Context Hóa đơn . . . . . . . . . . . . 19
4.4 Xác định các Microservice . . . . . . . . . . . . . . . . . . . . . 21
4.5 Hiện thực hóa tình huống sử dụng. . . . . . . . . . . . . . . . . . 22
4.5.1 Trường hợp sử dụng thêm khách hàng. . . . . . . . . . . . 22
4.5.2 Trường hợp sử dụng thêm sản phẩm. . . . . . . . . . . . . 22
4.5.3 Trường hợp sử dụng phát hành kí hiệu hóa đơn. . . . . . . 23
4.5.4 Trường hợp sử dụng tạo hóa đơn. . . . . . . . . . . . . . . 23
4.5.5 Trường hợp sử dụng phát hành hóa đơn. . . . . . . . . . . 24
4.5.6 Trường hợp sử dụng tạo hóa đơn và phát hành hóa đơn. . . 24
4.5.7 Trường hợp sử dụng phát hành hóa đơn thay thế. . . . . . 25

Chương 5 Thiết kế các Microservice 26


5.1 UserService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1.1 Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1.3 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2 EmailService . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2.1 Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2.3 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3 ProductService . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3.1 Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3.3 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4 CustomerService . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4.1 Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4.3 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5 InvoiceService . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5.1 Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.5.3 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

v
Chương 6 Triển khai hệ thống 69
6.1 Triển khai Cơ sở dữ liệu có tính đáp ứng cao . . . . . . . . . . . . 70
6.2 Triển khai hệ thống Discovery và Gateway . . . . . . . . . . . . 70
6.3 Cài đặt MessageQueue Kafka . . . . . . . . . . . . . . . . . . . . 71
6.4 Đóng gói các Microservice. . . . . . . . . . . . . . . . . . . . . . 72

Tài liệu tham khảo 73

vi
Danh mục thuật ngữ và từ viết
tắt
API Application programming interface: Giao diện lập trình ứng dụng

Bounder Context Vùng nội dung

Cloud Native Xây dựng và vận hành các ứng dụng khai thác ưu điểm của mô hình
điện toán đám mây

Container Phương pháp đóng gói ứng dụng bao gồm mã, cấu hình và môi trường

DDD Domain Driven Design

Domain Driven Design Phân tích dịch vụ hướng miền

MessageBroker Trung gian truyền thông điệp

Microservice Vi dịch vụ

Request HTTP Request các thông tin được gửi từ client tới server

Response HTTP Response các thông tin được gửi từ server tới client

Schema Lược đồ cơ sở dữ liệu

XML Extensible Markup Language là ngôn ngữ đánh dấu mở rộng

vii
Danh sách hình vẽ

3.1 Phân tích Usecase Hóa đơn điện tử. . . . . . . . . . . . . . . . . . 9


3.2 Luồng nghiệp vụ tạo tài khoản doanh nghiệp. . . . . . . . . . . . 10
3.3 Luồng nghiệp vụ sản phẩm. . . . . . . . . . . . . . . . . . . . . . 11
3.4 Luồng nghiệp vụ thêm khách hàng. . . . . . . . . . . . . . . . . . 11
3.5 Luồng nghiệp vụ phát hành kí hiệu hóa đơn. . . . . . . . . . . . . 12
3.6 Luồng nghiệp vụ phát hành hóa đơn. . . . . . . . . . . . . . . . . 12
3.7 Luồng nghiệp vụ phát hành hóa đơn thay thế. . . . . . . . . . . . 13

4.1 Phân tích nghiệp vụ Hóa đơn điện tử. . . . . . . . . . . . . . . . . 15


4.2 Phân chia vùng nội dung theo nghiệp vụ. . . . . . . . . . . . . . . 16
4.3 Entity Bounder Context Doanh nghiệp . . . . . . . . . . . . . . . 17
4.4 Entity Bounder Context Thông báo . . . . . . . . . . . . . . . . . 18
4.5 Entity Bounder Context Khách hàng . . . . . . . . . . . . . . . . 18
4.6 Entity Bounder Context Sản phẩm . . . . . . . . . . . . . . . . . 19
4.7 Entity Bounder Context Hóa đơn . . . . . . . . . . . . . . . . . . 20
4.8 Tổng quan thiết kế hệ thống. . . . . . . . . . . . . . . . . . . . . 21
4.9 Biểu đồ tuần tự thêm khách hàng. . . . . . . . . . . . . . . . . . 22
4.10 Biểu đồ tuần tự thêm sản phẩm. . . . . . . . . . . . . . . . . . . 22
4.11 Biểu đồ tuần tự phát hành kí hiệu hóa đơn. . . . . . . . . . . . . . 23
4.12 Biểu đồ tuần tự tạo hóa đơn. . . . . . . . . . . . . . . . . . . . . 23
4.13 Biểu đồ tuần tự phát hành hóa đơn. . . . . . . . . . . . . . . . . . 24
4.14 Biểu đồ tuần tự tạo và phát hành hóa đơn. . . . . . . . . . . . . . 24
4.15 Biểu đồ tuần tự phát hành hóa đơn thay thế. . . . . . . . . . . . . 25

5.1 Kiến trúc 3 lớp. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26


5.2 Biểu đồ tuần tự lấy thông tin doanh nghiệp. . . . . . . . . . . . . 30
5.3 Biểu đồ tuần tự cập nhật thông tin doanh nghiệp. . . . . . . . . . 30
5.4 Biểu đồ tuần tự thêm doanh nghiệp. . . . . . . . . . . . . . . . . 31
5.5 Database User . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.6 Biểu đồ tuần tự lấy cấu hình email . . . . . . . . . . . . . . . . . 35
5.7 Biểu đồ tuần tự cập nhật cấu hình email . . . . . . . . . . . . . . 35
5.8 Biểu đồ tuần tự thực thi Event tạo cấu hình email . . . . . . . . . 36
5.9 Biểu đồ tuần tự thực thi Event gửi email . . . . . . . . . . . . . . 36
5.10 Table EmailConfig . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.11 Table Email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.12 Biểu đồ tuần tự xem thông tin sản phẩm. . . . . . . . . . . . . . . 42
5.13 Biểu đồ tuần tự tạo mới sản phẩm. . . . . . . . . . . . . . . . . . 42

viii
5.14 Biểu đồ tuần tự sửa thông tin sản phẩm. . . . . . . . . . . . . . . 43
5.15 Biểu đồ tuần tự xóa thông tin sản phẩm. . . . . . . . . . . . . . . 43
5.16 Database Product . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.17 Biểu đồ tuần tự lấy thông tin khách hàng. . . . . . . . . . . . . . 47
5.18 Biểu đồ tuần tự tạo mới thông tin khách hàng. . . . . . . . . . . . 48
5.19 Biểu đồ tuần tự sửa thông tin khách hàng. . . . . . . . . . . . . . 48
5.20 Biểu đồ tuần tự xóa thông tin khách hàng. . . . . . . . . . . . . . 49
5.21 Database Customer . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.22 Biểu đồ tuần tự phát hành kí hiệu hóa đơn. . . . . . . . . . . . . . 57
5.23 Biểu đồ tuần tự tạo hóa đơn. . . . . . . . . . . . . . . . . . . . . 58
5.24 Biểu đồ tuần tự tạo hóa đơn. . . . . . . . . . . . . . . . . . . . . 58
5.25 Biểu đồ tuần tự lấy hóa đơn. . . . . . . . . . . . . . . . . . . . . 59
5.26 Biểu đồ tuần tự phát hành hóa đơn. . . . . . . . . . . . . . . . . . 59
5.27 Biểu đồ tuần tự thực thi Event phát hành kí hiệu hóa đơn. . . . . . 60
5.28 Biểu đồ tuần tự thực thi Event phát hành hóa đơn. . . . . . . . . . 60
5.29 Biểu đồ lớp InvoiceService. . . . . . . . . . . . . . . . . . . . . . 61
5.30 Thực thể loại hóa đơn. . . . . . . . . . . . . . . . . . . . . . . . 61
5.31 Thực thể mẫu hóa đơn. . . . . . . . . . . . . . . . . . . . . . . . 62
5.32 Thực thể mẫu hóa đơn. . . . . . . . . . . . . . . . . . . . . . . . 63
5.33 Thực thể mẫu hóa đơn. . . . . . . . . . . . . . . . . . . . . . . . 64
5.34 Thực thể danh sách hóa đơn. . . . . . . . . . . . . . . . . . . . . 65
5.35 Thực thể hóa đơn. . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.36 Cơ sở dữ liệu InvoiceSerivce. . . . . . . . . . . . . . . . . . . . . 68

6.1 Tổng quan thiết kế Hệ thống. . . . . . . . . . . . . . . . . . . . . 69


6.2 Hệ thống Cơ sở dữ liệu dạng Master- Master. . . . . . . . . . . . 70
6.3 Hệ thống Discovery và Gateway. . . . . . . . . . . . . . . . . . . 71
6.4 Hệ thống MessageQueue Kafka. . . . . . . . . . . . . . . . . . . 72
6.5 Container hóa Microservice. . . . . . . . . . . . . . . . . . . . . 72

ix
Danh sách bảng

Bảng 5.1 API lấy thông tin doanh nghiệp . . . . . . . . . . . . . . . . 27


Bảng 5.2 Response lấy thông tin doanh nghiệp . . . . . . . . . . . . . 27
Bảng 5.3 API thay đổi thông tin doanh nghiệp . . . . . . . . . . . . . 28
Bảng 5.4 Response lấy thông tin doanh nghiệp . . . . . . . . . . . . . 28
Bảng 5.5 API lấy thông tin doanh nghiệp . . . . . . . . . . . . . . . . 29
Bảng 5.6 Response lấy thông tin doanh nghiệp . . . . . . . . . . . . . 29
Bảng 5.7 Thuộc tính User Database . . . . . . . . . . . . . . . . . . 32
Bảng 5.8 API lấy cấu hình email . . . . . . . . . . . . . . . . . . . . 33
Bảng 5.9 Response lấy cấu hình email . . . . . . . . . . . . . . . . . 33
Bảng 5.10 API sửa cấu hình email . . . . . . . . . . . . . . . . . . . . 33
Bảng 5.11 Response sửa cấu hình email . . . . . . . . . . . . . . . . . 34
Bảng 5.12 Thuộc tính bảng EmailConfig . . . . . . . . . . . . . . . . 37
Bảng 5.13 Thuộc tính bảng Email . . . . . . . . . . . . . . . . . . . . 38
Bảng 5.14 API lấy sản phẩm . . . . . . . . . . . . . . . . . . . . . . . 39
Bảng 5.15 Response lấy sản phẩm . . . . . . . . . . . . . . . . . . . . 39
Bảng 5.16 API thêm sản phẩm . . . . . . . . . . . . . . . . . . . . . . 40
Bảng 5.17 Response lấy sản phẩm . . . . . . . . . . . . . . . . . . . . 40
Bảng 5.18 API sửa sản phẩm . . . . . . . . . . . . . . . . . . . . . . . 40
Bảng 5.19 Response sửa sản phẩm . . . . . . . . . . . . . . . . . . . . 41
Bảng 5.20 API xóa sản phẩm . . . . . . . . . . . . . . . . . . . . . . . 41
Bảng 5.21 Response xóa sản phẩm . . . . . . . . . . . . . . . . . . . . 41
Bảng 5.22 Thuộc tính bảng Product . . . . . . . . . . . . . . . . . . . 44
Bảng 5.23 API lấy thông tin khách hàng . . . . . . . . . . . . . . . . . 45
Bảng 5.24 Response lấy thông tin khách hàng . . . . . . . . . . . . . . 45
Bảng 5.25 API thêm khách hàng . . . . . . . . . . . . . . . . . . . . . 45
Bảng 5.26 Response lấy thông tin khách hàng . . . . . . . . . . . . . . 46
Bảng 5.27 API sửa thông tin khách hàng . . . . . . . . . . . . . . . . 46
Bảng 5.28 Response sửa thông tin khách hàng . . . . . . . . . . . . . . 46
Bảng 5.29 API xóa sản phẩm . . . . . . . . . . . . . . . . . . . . . . . 47
Bảng 5.30 Response xóa sản phẩm . . . . . . . . . . . . . . . . . . . . 47
Bảng 5.31 Thuộc tính Bảng Customer . . . . . . . . . . . . . . . . . . 50
Bảng 5.32 API phát hành kí hiệu hóa đơn . . . . . . . . . . . . . . . . 51
Bảng 5.33 Response lấy thông tin doanh nghiệp . . . . . . . . . . . . . 51
Bảng 5.34 API tạo hóa đơn . . . . . . . . . . . . . . . . . . . . . . . . 52
Bảng 5.35 Response tạo hóa đơn . . . . . . . . . . . . . . . . . . . . . 53
Bảng 5.36 API lấy hóa đơn . . . . . . . . . . . . . . . . . . . . . . . . 53

You might also like