Uploaded by punpun nocry

DATN NguyenHuyDinh 20173016 Copy (1)

advertisement
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
ĐỒ ÁN TỐT NGHIỆP
Xây dựng hệ thống giám sát xe chuyên dùng của ngân
hàng
NGUYỄN HUY ĐỊNH
dinh.nh173016@sis.hust.edu.vn
Ngành Kỹ thuật máy tính
Chuyên ngành Hệ nhúng và IOT
Giảng viên hướng dẫn: TS. Hoàng Văn Hiệp
Chữ kí GVHD
Khoa:
Kỹ thuật máy tính
Trường:
Công nghệ thông tin và Truyền thông
HÀ NỘI, 08/2022
LỜI CẢM ƠN
Lời đầu tiên, tôi xin chân thành cảm ơn đến TS. Hoàng Văn Hiệp, đã luôn nhiệt
tình giúp đỡ, hướng dẫn tôi trong quá trình thực hiện làm đồ án tốt nghiệp.
Tôi cũng xin cảm ơn đến bạn bè, anh chị trên lab Navis, đặc biệt là anh Phạm
Quang Hiếu đã luôn trao đổi, đóng góp ý kiến để sản phẩm tôi làm ra được hoàn
thiện và tốt nhất.
Cuối cùng, tôi xin cảm ơn gia đình, bạn bè đã luôn quan tâm, động viên, tạo điều
kiện tốt nhất để tôi có thể hoàn thành đồ án này.
i
TÓM TẮT NỘI DUNG ĐỒ ÁN
Hiện nay, việc vận tải hàng hoá là một việc diễn ra hằng ngày trong cuộc sống.
Đặc biệt đối với các đơn vị chuyên trách công việc vận chuyển thì việc giám sát
các thiết bị vận chuyển, biết được trạng thái thiết bị, hành trình cũng như lịch sử di
chuyển, cụ thể ở đây chính là các xe chuyên dùng là một điều rất quan trọng. Trong
khuôn khổ đồ án sẽ đề cập đến một đơn vị vận tải một loại hàng hoá rất đặc thù,
đó chính là hệ thống xe chuyên dùng chở tiền trong ngân hàng. Để có thể theo dõi
được hoạt động công việc vận chuyển tiền, yêu cầu được đặt ra là phải xây dựng hệ
thống giám sát hành trình, thông tin vận chuyển, trạng thái của các thiết bị, lập lịch
trình tuyến tường,... để sao cho việc vận chuyển tiền được diễn ra được an toàn và
dễ kiểm soát nhất.
Để dễ dàng bảo trì và mở rộng, hệ thống giám sát xe chuyên dùng của ngân hàng
sẽ được thiết kế theo kiến trúc nhiều dịch vụ nhỏ Microservice, với phần trang web
quản lý được xây dựng giao diện bằng công nghệ ReactJs, Asp.Net Core và Sql
Server để xây dựng server hệ thống và lưu trữ dữ liệu.
i
MỤC LỤC
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI .........................................................
1
1.1 Đặt vấn đề............................................................................................
1
1.2 Mục tiêu và phạm vi đề tài.....................................................................
2
1.3 Định hướng giải pháp............................................................................
2
1.4 Bố cục đồ án ........................................................................................
3
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU.............................
4
2.1 Khảo sát hiện trạng ...............................................................................
4
2.2 Tổng quan chức năng ............................................................................
5
2.2.1 Biểu đồ use case tổng quát ..........................................................
5
2.2.2 Biểu đồ use case phân rã.............................................................
6
2.2.3 Quy trình nghiệp vụ ................................................................... 11
2.3 Đặc tả chức năng .................................................................................. 12
2.3.1 Đặc tả use case phân quyền người dùng........................................ 13
2.3.2 Đặc tả use case cập nhật thông tin tuyến trong ngày ...................... 14
2.3.3 Đặc tả use case xem lịch sử chạy tuyến......................................... 14
2.3.4 Đặc tả use case xem lịch sử chạy xe ............................................. 15
2.3.5 Đặc tả use case cập nhật hành trình tuyến mẫu.............................. 16
2.3.6 Đặc tả use case phân công tuyến.................................................. 17
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG.................................................... 19
3.1 Frontend .............................................................................................. 19
3.1.1 ReactJs...................................................................................... 19
3.1.2 Ant Design ................................................................................ 20
3.1.3 React Geocode........................................................................... 20
3.1.4 @react-google-maps/api ............................................................. 20
3.2 Backend............................................................................................... 21
3.2.1 ASP.Net core ............................................................................. 21
3.2.2 Microsoft Sql Server .................................................................. 22
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ ....................................... 23
4.1 Thiết kế kiến trúc.................................................................................. 23
4.1.1 Lựa chọn kiến trúc phần mềm ..................................................... 23
4.1.2 Thiết kế tổng quan...................................................................... 25
4.1.3 Thiết kế chi tiết gói .................................................................... 26
4.2 Thiết kế chi tiết..................................................................................... 29
4.2.1 Thiết kế giao diện ...................................................................... 29
4.2.2 Thiết kế API .............................................................................. 31
4.2.3 Thiết kế lớp ............................................................................... 32
4.2.4 Thiết kế cơ sở dữ liệu ................................................................. 36
4.3 Xây dựng ứng dụng............................................................................... 39
4.3.1 Thư viện và công cụ sử dụng....................................................... 39
4.3.2 Kết quả đạt được ........................................................................ 40
4.3.3 Minh họa các chức năng chính .................................................... 41
4.4 Kiểm thử.............................................................................................. 47
4.4.1 Kiểm thử chức năng quản lý người dùng và quyền......................... 47
4.4.2 Kiểm thử chức năng giám sát trực tuyến ....................................... 48
4.4.3 Kiểm thử chức năng quản lý lịch sử ............................................. 48
4.4.4 Kiểm thử chức năng quản lý phân công ........................................ 49
4.4.5 Kiểm thử chức năng quản lý báo cáo............................................ 50
4.5 Triển khai ............................................................................................ 50
iii
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT...................... 52
5.1 Thiết kế phân quyền động...................................................................... 52
5.1.1 Đặt vấn để ................................................................................. 52
5.1.2 Giải quyết vấn đề ....................................................................... 52
5.1.3 Kết quả đạt được ........................................................................ 55
5.2 Nâng cao hiệu năng giao diện người dùng ............................................... 55
5.2.1 Đặt vấn đề ................................................................................. 55
5.2.2 Giải quyết vấn đề ....................................................................... 56
5.2.3 Kết quả đạt được ........................................................................ 57
CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................. 58
6.1 Kết luận ............................................................................................... 58
6.2 Hướng phát triển................................................................................... 58
TÀI LIỆU THAM KHẢO......................................................................... 59
PHỤ LỤC................................................................................................. 61
A. Thiết kế cơ sở dữ liệu........................................................................... 61
DANH MỤC HÌNH VẼ
Hình 2.1
Hình 2.2
Hình 2.3
Hình 2.4
Hình 2.5
Hình 2.6
Hình 2.7
Hình 2.8
Hình 2.9
Biểu đồ use case tổng quát hệ thống giám xe xe chuyên dụng.
Biểu đồ use case phân rã giám sát trưc tuyến. . . . . . . . . . .
Biểu đồ use case phân rã quản lý lịch sử. . . . . . . . . . . . .
Biểu đồ use case phân rã quản lý thông tin cán bộ và thiết bị. .
Biểu đồ use case phân rã quản lý điểm giao dịch và tuyến mẫu.
Biểu đồ use case phân rã quản lý báo cáo. . . . . . . . . . . . .
Biểu đồ use case phân rã quản lý người dùng và phân quyền. .
Biểu đồ quy trình hoạt động chính của hệ thống. . . . . . . . .
Biểu đồ hoạt động quy trình nghiệp vụ phân công tuyến. . . .
5
6
7
8
9
10
11
11
12
Hình 4.1
Hình 4.2
Hình 4.3
Hình 4.4
Hình 4.5
Hình 4.6
Kiến trúc tổng quát hệ thống. . . . . . . . . . . . . .
Biểu đồ phụ thuộc gói. . . . . . . . . . . . . . . . .
Thiết kế chi tiết gói backend. . . . . . . . . . . . . .
Thiết kế chi tiết gói frontend. . . . . . . . . . . . . .
Thiết kế mockup hệ thống giám sát xe chuyên dùng.
Các thành phần giao diện. . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
25
26
28
29
30
Hình 4.7
Hình 4.8
Hình 4.9
Hình 4.10
Hình 4.11
Hình 4.12
Hình 4.13
Hình 4.14
Hình 4.15
Hình 4.16
Hình 4.17
Hình 4.18
Thiết kế các lớp thuộc chức năng quản lý phân công tuyến.
Biểu đồ trình tự usecase quản lý phân công tuyến. . . . . .
Thiết kế các lớp thuộc chức năng quản lý người dùng. . . .
Biểu đồ trình tự usecase quản lý phân người dùng. . . . . .
Biểu đồ thực thể liên kết (E-R diagram). . . . . . . . . . .
Biểu đồ thiết kế cơ sở dữ liệu. . . . . . . . . . . . . . . . .
Giao diện giám sát trực tuyến. . . . . . . . . . . . . . . . .
Giao diện lịch sử chạy tuyến trực tuyến. . . . . . . . . . . .
Giao diện xem hành trình chạy tuyến trực tuyến. . . . . . .
Giao diện cập nhật hành trình tuyến đang chạy. . . . . . . .
Giao diện quản lý lịch sử. . . . . . . . . . . . . . . . . . . .
Giao diện quản lý lịch sử tuyến. . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
33
34
35
36
37
41
42
42
43
43
44
Hình 4.19
Hình 4.20
Hình 4.21
Hình 4.22
Giao diện thống kê và quá trình chạy xe.
Giao diện quản lý nhóm quyền. . . . . .
Giao diện menu của nhóm quyền test. . .
Giao diện thêm mới nhóm quyền. . . . .
.
.
.
.
.
.
.
.
45
45
46
47
Hình 5.1
Hình 5.2
Hình 5.3
Tổng quan giải pháp phân quyền. . . . . . . . . . . . . . . . . 52
Quy trình phân quyền. . . . . . . . . . . . . . . . . . . . . . . 53
Giao diện component danh sách lịch sử. . . . . . . . . . . . . . 56
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
v
Hình 5.4
Cách thức hoạt động của react-window. . . . . . . . . . . . . . 57
vi
DANH MỤC BẢNG BIỂU
Bảng 2.1
Bảng 2.2
Bảng 2.3
Bảng 2.4
Bảng 2.5
Bảng 2.6
Đặc tả use case phân quyền người dùng. . . . . . .
Đặc tả use case cập nhật thông tin tuyến trong ngày.
Đặc tả use case xem lịch sử chạy tuyến. . . . . . . .
Đặc tả use case xem lịch sử chạy xe. . . . . . . . . .
Đặc tả use case cập nhật hành trình tuyến mẫu. . .
Đặc tả use case phân công tuyến. . . . . . . . . . .
.
.
.
.
.
.
Bảng 3.1
Các phương thức React Geocode. . . . . . . . . . . . . . . . . 20
Bảng 4.1
Bảng 4.2
Bảng 4.3
Bảng 4.4
Bảng 4.5
Bảng 4.6
Bảng 4.7
Bảng 4.8
Bảng 4.9
Bảng 4.10
Bảng 4.11
Bảng 4.12
Các cấu hình chung của giao diện trang web . . . .
Thiết kế chi tiết bảng User. . . . . . . . . . . . . . .
Thiết kế chi tiết bảng Scope. . . . . . . . . . . . . .
Thiết kế chi tiết bảng Permission. . . . . . . . . . .
Thiết kế chi tiết bảng ScopePermission. . . . . . . .
Thiết kế chi tiết bảng Unit. . . . . . . . . . . . . . .
Thiết kế chi tiết bảng UserUnit. . . . . . . . . . . .
Danh sách công cụ và thư viện sử dụng. . . . . . .
Danh mục kết quả mã nguồn . . . . . . . . . . . . .
Kiểm thử chức năng quản lý quyền và người dùng. .
Kiểm thử chức năng giám sát trực tuyến. . . . . . .
Kiểm thử chức năng quản lý lịch sử. . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
14
15
16
17
18
29
38
38
38
39
39
39
40
41
47
48
49
Bảng 4.13 Kiểm thử chức năng quản lý phân công. . . . . . . . . . . . . 49
Bảng 4.14 Kiểm thử chức năng quản lý báo cáo. . . . . . . . . . . . . . . 50
Bảng 4.15 Danh sách các thiết bị và công cụ triển khai hệ thống. . . . . . 51
Bảng A.1 Thiết kế chi tiết bảng Rfid. . . . . . . . . . . . . . . . . . . . . 61
Bảng A.2
Bảng A.3
Bảng A.4
Bảng A.5
Bảng A.6
Bảng A.7
Bảng A.8
Bảng A.9
Bảng A.10
Thiết kế chi tiết bảng Car. . . . . . . .
Thiết kế chi tiết bảng Device. . . . . .
Thiết kế chi tiết bảng Member. . . . . .
Thiết kế chi tiết bảng History. . . . . .
Thiết kế chi tiết bảng Online. . . . . .
Thiết kế chi tiết bảng CarReport. . . .
Thiết kế chi tiết bảng TransactionPoint.
Thiết kế chi tiết bảng SampleRoute. . .
Thiết kế chi tiết bảng Segmentation. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
62
62
63
63
64
64
65
65
vii
DANH MỤC TỪ VIẾT TẮT
Viết tắt
Tên tiếng anh
API
Application Programming Giao diện lập trình ứng dụng
Interface
ĐATN
HTTP
Tên tiếng việt
Đồ án tốt nghiệp
Hypertext Transfer Proto- Giao thức vận chuyển siêu văn
col
bản
IIS
Internet Information Ser- Dịch vụ thông tin Internet,
vices
giống như một Web Server
HTML
HyperText Markup Lan- Ngôn ngữ đánh dấu siêu văn
guage
bản
ddl
dynamic link library
Một thư viện chứa các hàm và
mã có thể được sử dụng bởi
nhiều chương trình cùng một
lúc
DOM
Document Object Model
Mô hình các đối tượng tài liệu
OS
Operating System
Hệ điều hành
CPU
Central Processing Unit
Bộ xử lý trung tâm
RAM
Random Access Memory
Bộ nhớ tạm
viii
DANH MỤC THUẬT NGỮ
Thuật ngữ
Ý nghĩa
Frontend
Lớp giao diện người dùng
Backend
Lớp truy vấn dữ liệu
Use case
Ca sử dụng
Server
Máy chủ
Component
Thành phần giao diện
Token
Mã xác thực. Đoạn mã duy nhất chứa thông tin danh tính
để xác thực
Restful
Kiểu thiết kế API bao gồm các phương thức tạo, đọc, cập
nhật và xóa
Mockup
Giả lập trong thiết kế giao diện
Token
Chuỗi mã hoá
Cookie
Các tệp được tạo ra khi người dùng truy cập vào website
ix
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
Chương 1 đưa ra những vấn đề thực tế dẫn tới lý do chọn đề tài, tổng quan về hệ
thống giám sát xe chuyên dùng của ngân hàng. Sau đó đưa ra mục tiêu và phạm vi
của đề tài, định hướng giải pháp và bố cục của đồ án.
1.1
Đặt vấn đề
Vận chuyển tiền trong ngân hàng là một vấn đề quan trọng. Bởi tiền là loại hàng
hoá đặc thù, dòng tiền được cung cấp đầy đủ giúp cho các giao dịch được tiến hành
một cách trôi chảy. Không những vậy, tiền là một hàng hoá có giá trị cao nên việc
đảm bảo an toàn đảm bảo an toàn cho việc vận chuyển là rất cần thiết, cũng như
đảm bảo an toàn tính mạng cho người lái xe, những người liên quan đến việc vận
chuyển tiền nói trên. Giúp tạo ra sự hài lòng, tin tưởng từ phía những người sử dụng
tiền, dịch vụ của ngân hàng, dần dần thu hút những khách hàng trung thành.
Để thực hiện việc vận chuyển tiền trong ngân hàng, thì mỗi ngân hàng sẽ có các
đội xe chuyên dùng cùng các nhân viên phụ trách nhiệm vụ trên. Việc vận chuyển
tiền cần được diễn ra sao cho nguồn tiền được đảm bảo an toàn. Do đó, các đội xe
và nhân viên phụ trách cần được giám sát để việc vận chuyển được vận hành đúng
với các kế hoạch, phân công được đặt ra. Tuy nhiên, việc giám sát vận hành của
các tổ vận chuyển trong ngân hàng hầu như vẫn diễn ra thủ công, chưa được quản
lý tập trung bằng hệ thống phần mềm. Vì vậy, vấn đề đặt ra là cần có một hệ thống
phần mềm quản lý tập trung, giám sát các tổ đội vận chuyển này.
Do đó, trong khuôn khổ đồ án, tôi sẽ phát triển ứng dụng website quản lý tập
trung, giám sát xe chuyên dùng của ngân hàng. Việc quản lý sẽ được diễn ra một
cách tự động nhờ sự hỗ trợ của phần mềm. Ứng dụng được tích hợp Google Map
API giúp hỗ trợ các cơ sở, tổ công tác dễ dàng trong việc xác định tuyến đường và
tính toán được thời gian làm việc giữa các điểm giao dịch. Ứng dụng đồng thời cũng
có thể được áp dụng trong các doanh nghiệp chuyên trách công việc vận chuyển
hàng hoá mà cần giám sát các đội xe chuyên dùng của mình.
Hệ thống giám sát xe sẽ bao gồm nhiều đơn vị. Mỗi đơn vị lại có danh sách
cán bộ và thiết bị riêng của mình. Người sử dụng hệ thống bao gồm hai đối tượng
chính: (i) người vận hành có các chức năng chính là quản lý thông tin của cán bộ,
thiết bị, báo cáo, tạo lập các điểm giao dịch, tuyến mẫu, phân công tuyến; (ii) người
quản trị hệ thống có các chức năng chính như giám sát thiết bị và phân quyền người
dùng. Vì vậy, tôi sẽ thiết kế phân quyền hệ thống theo hai hướng chính đó là phân
quyền theo nhóm chức năng và phân quyền theo đơn vị được phân công quản lý.
1
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
1.2
Mục tiêu và phạm vi đề tài
Để giải quyết các vấn đề đã nêu ở trong mục 1.1, đồ án tốt nghiệp của tôi hướng
tới mục tiêu chính đó là phát triển website quản lý, giám sát xe chuyên dùng trong
ngân hàng. Website sẽ có giao diện trực quan, dễ sử dụng giúp cho người dùng dễ
dàng quản lý, nắm bắt các chức năng chính của hệ thống. Các chức năng chính của
website sẽ bao gồm:
• Giám sát trạng thái xe trực tuyến.
• Xem lại lịch sử tuyến và lịch sử xe.
• Quản lý thông tin thiết bị và cán bộ.
• Quản lý điểm giao dịch, tuyến mẫu và phân công tuyến.
• Xem báo cáo và xuất báo cáo.
• Phân quyền và quản lý người dùng.
Ngoài ra, website sẽ phân quyền động các đối tượng theo từng hành động và phân
quyền sử dụng tài nguyên theo danh sách tài nguyên mà mỗi đơn vị được phân
công.
1.3
Định hướng giải pháp
Khi xây dựng ứng dụng web ta có một số kiến trúc xây dựng ứng dụng chính:
• Monilithic.
• Microservice.
• Serverless.
Dựa trên ưu nhược điểm của từng loại kiến trúc và để dễ dàng cho việc bảo trì,
mở rộng và phát triển ứng dụng website, tôi quyết định phát triển ứng dụng theo
kiến trúc microservice. Ứng dụng sẽ được chia thành hai phần riêng biệt là backend
và frontend, hai phần sẽ giao tiếp, trao đổi dữ liệu với nhau thông qua REST API.
Về phía backend, tôi quyết định sử dụng nền tảng ASP.Net core. ASP.Net core là
một framework đa nền tảng và chạy trên nhiều hệ điều hành khác nhau: Windows,
Linux, MAC OS. Về phía database, tôi quyết định sử dụng Sql Server để lưu trữ
dữ liệu, do hai công nghệ ASP.Net core và Sql Server đều được phát triển bởi
Microsoft và chúng kết hợp với nhau rất tốt.
Về phía frontend, website được xây dựng theo hướng Single Page Application
(SPA) giúp hiệu năng trang web đạt được cao hơn. Toàn bộ nội dung trang web sẽ
được tải vào lần đầu tiên người dùng truy cập. Vào những lần tiếp theo, trang web
sẽ chỉ tải lại những nội dung thay đổi giúp việc tải trang được nhanh hơn. Để xây
2
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
dựng ứng dụng theo hướng trên, tôi quyết định sử dụng thử viện ReactJs vì ReactJs
có thể phân chia trang web thành các component và có thể tái sử dụng các thành
phần này. Ngoài ra tôi còn sử dụng thư viện Ant Design là một thư viện giao diện
người dùng đã được thiết kế sẵn các component ReactJs để chúng ta có thể tái sử
dụng trong việc thiết kế trang web.
Để phân quyền người dùng sử dụng ứng dụng web, hệ thống thực hiện việc phân
quyền theo mô hình phân quyền RBCA và phân quyền truy cập các tài nguyên theo
đơn vị phụ trách.
1.4
Bố cục đồ án
Các phần còn lại của báo cáo đồ án tốt nghiệp sẽ có nội dung như sau.
Trong chương 2, tôi sẽ đưa ra các khảo sát và phân tích yêu cầu, nêu ra các chức
năng tổng quan và phân rã nhỏ một số chức năng của ứng dụng.
Trong chương 3, tôi sẽ nêu ra các công nghệ chính để phát triển hệ thống. Phía
frontend sử dụng ReactJs, Antd, @react-google-map-api. Phía backend sử dụng
ASP.Net core và Sql Server.
Chương 4 sẽ trình bày về thiết kế kiến trúc của hệ thống, thiết kế cơ sở dữ liệu,
các quá trình xây dựng, kiểm thử, triển khai hệ thống.
Chương 5 sẽ nêu lên những giải pháp đóng góp nổi bật mà tôi đưa ra trong ứng
dụng giám sát hệ thống xe chuyên dụng của ngân hàng như thiết kế phân quyền
động người dùng.
Cuối cùng sẽ là chương 6, tôi sẽ nêu ra các đóng góp chính của đồ án và các
phương hướng phát triển sản phẩm trong tương lai.
3
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
2.1
Khảo sát hiện trạng
Hiện nay trên thị trường đã có một số hệ thống giám sát xe chở tiền của ngân
hàng, nổi bật nhất là 2 ứng dụng TTAS [1] (phần mềm giám sát hành trình do công
ty TNHH TTAS cung cấp), BAGPS [2] (phần mềm giám sát hành trình do công ty
TNHH phát triển công nghệ điện tử Bình Anh cung cấp).
Ứng dụng TTAS có các chức năng chính như giám sát đóng mở cửa két sắt, cảnh
báo khẩn cấp, giám sát các thông tin vị trí, vận tốc, trạng thái tắt mở hay thời gian
dừng đỗ của xe, quản lý tài xế, lưu trữ hành trình xe khi mất sóng, lưu trữ lịch sử
hành trình xe trong 90 ngày.
Ứng dụng BAGPS đã có các tính năng phát triển hơn so với ứng dụng TTAS.
Ngoài các tính năng đã nêu ở trên như của ứng dụng TTAS thì BAGPS còn cho
xuất các báo cáo theo ngày, tuần, tháng các báo cáo liên quan đến nhiên liệu, hành
trình xe...
Cả hai ứng dụng trên về cơ bản đều là các ứng dụng giám sát hành trình, có thể
áp dụng trong nhiều hệ thống quản trị vận tải chuyên biệt khác nhau. Tuy nhiên
trong việc vận chuyển hàng hoá đặc biệt đó là vận chuyển tiền trong ngân hàng thì
mới tập trung vào việc giám sát hành trình của các xe vận chuyển, trạng thái xe và
các thiết bị trên xe, lưu trữ lịch sử hành trình xe, hai phần mềm trên chưa đưa ra
được các chức năng như quản lý điểm giao dịch, tạo tuyến mẫu để so sánh với hành
trình thực tế của xe, quản lý các thành viên trong tổ công tác, quản lý danh sách
các thiết bị.
Từ những phân tích ở trên, tôi sẽ phát triển hệ thống giám sát xe chuyên dùng
chở tiền trong ngân hàng với đầy đủ các tính năng đã nêu trong phần mục tiêu và
phạm vi đề tài.
4
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
2.2
Tổng quan chức năng
2.2.1
Biểu đồ use case tổng quát
Hình 2.1: Biểu đồ use case tổng quát hệ thống giám xe xe chuyên dụng.
Hình 2.1 là biểu đồ use case tổng quát của hệ thống quản lý xe chuyên dùng
trong ngân hàng. Hệ thống gồm có hai tác nhân chính đó là Admin (quản trị hệ
thống) và Operator (Người vận hành hệ thống). Người vận hành hệ thống có các
chức năng giám sát trực tuyến, quản lý lịch sử, quản lý thông tin cán bộ và thiết
bị, quản lý điểm giao dịch và tuyến mẫu, phân công tuyến, quản lý báo cáo. Người
quản trị hệ thống kế thừa các chức năng của người vận hành hệ thống và có thể
quản lý người dùng và các quyền người dùng, quản lý các đơn vị.
5
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
2.2.2
Biểu đồ use case phân rã
a, Biểu đồ use case phân rã giám sát trực tuyến
Hình 2.2: Biểu đồ use case phân rã giám sát trưc tuyến.
Hình 2.2 là biểu đồ use case phân rã giám sát trực tuyến. Người vận hành có thể
xem trạng thái trực tuyến các xe, sửa thông tin các tuyến đang chạy và sắp chạy,
xem lịch sử chạy tuyến của các xe. Ngoài ra người vận hành còn có thể quan sát
lịch sử di chuyển của xe, chọn thời điểm bắt đầu xem lịch sử. Người quản trị kế
thừa các chức năng của người vận hành.
6
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
b, Biểu đồ use case phân rã quản lý lịch sử
Hình 2.3: Biểu đồ use case phân rã quản lý lịch sử.
Hình 2.3 là biểu đồ use case phân rã quản lý lịch sử. Người vận hành có thể xem
lịch sử chạy của tuyến, xem lịch sử chạy của xe. Người quản trị kế thừa các chức
năng của người vận hành.
7
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
c, Biểu đồ use case phân rã quản lý thông tin cán bộ và thiết bị
Hình 2.4: Biểu đồ use case phân rã quản lý thông tin cán bộ và thiết bị.
Hình 2.4 là biểu đồ use case phân rã quản lý thông tin cán bộ và thiết bị. Người
vận hành có thể thực hiện các thao thêm, cập nhật, xoá thông tin cán bộ và thiết
bị, xem danh sách cán bộ, thiết bị. Người quản trị kế thừa các chức năng của người
vận hành.
8
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
d, Biểu đồ use case phân rã quản lý điểm giao dịch, tuyến mẫu
Hình 2.5: Biểu đồ use case phân rã quản lý điểm giao dịch và tuyến mẫu.
Hình 2.5 là biểu đồ use case phân rã quản lý điểm giao dịch và tuyến mẫu. Người
vận hành có thể thực hiện các thao thêm, cập nhật, xoá thông tin điểm giao dịch,
tuyến mẫu, thêm bớt các điểm giao dịch vào hành trình của tuyến mẫu, xem danh
sách các điểm giao dịch và tuyến mẫu. Người quản trị kế thừa các chức năng của
người vận hành.
9
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
e, Biểu đồ use case phân rã quản lý báo cáo
Hình 2.6: Biểu đồ use case phân rã quản lý báo cáo.
Hình 2.6 là biểu đồ use case phân rã quản lý báo cáo. Người vận hành có thể
thực hiện xem báo cáo, lưu báo cáo trên server, tải báo cáo về máy hoặc xem báo
cáo định dạng file. Người quản trị kế thừa các chức năng của người vận hành.
10
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
f, Biểu đồ use case phân rã quản lý người dùng và phân quyền
Hình 2.7: Biểu đồ use case phân rã quản lý người dùng và phân quyền.
Hình 2.7 là biểu đồ use case phân rã quản lý người dùng và phân quyền.Người
vận hành có thể thực hiện các thao tác thêm mới, cập nhật, xoá người dùng, phân
quyền người dùng, đổi mật khẩu tài khoản người dùng, xem danh sách người dùng.
Người quản trị kế thừa các chức năng của người vận hành.
2.2.3
Quy trình nghiệp vụ
Quy trình hoạt động chính của hệ thống giám sát xe chuyên dùng sẽ diễn ra như
sau.
Hình 2.8: Biểu đồ quy trình hoạt động chính của hệ thống.
11
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Đầu tiên, người dùng sẽ thêm các điểm giao dịch. Khi có các điểm giao dịch,
thực hiện tạo lập các tuyến mẫu. Các tuyến mẫu này sẽ được phân công cho các
tổ công tác. Khi tổ công tác có phân công, thực hiện giám sát tuyến tại màn hình
giám sát. Sau mỗi tuyến được phân công, người dùng có thể xem lại báo cáo về
hoạt động của tuyến, xe.
Trong quy trình hoạt động trên, thì hoạt động phân công tuyến là quan trọng
nhất. Hình 2.9 thể hiện quy trình nghiệp vụ phân công tuyến. Khi người vận hành/
quản trị thực hiện phân công mới, thực hiện chọn danh sách cán bộ tham gia làm
nhiệm vụ tuyến được phân công. Hệ thống sẽ kiểm tra xem trong thời gian phân
công tuyến mới, cán bộ và thiết bị đã được phân công trong tuyến nào hay chưa.
Nếu cán bộ, thiết bị đã được phân công, hệ thống thông báo tới người dùng thông
báo cán bộ, thiết bị đã được phân công. Khi đó, người dùng thực hiện chọn cán bộ,
thiết bị khác. Nếu cán bộ, thiết bị chưa được phân công trong tuyến nào, hệ thống
sẽ tạo phân công mới và gửi thông báo phân công đến cán bộ tham gia.
Hình 2.9: Biểu đồ hoạt động quy trình nghiệp vụ phân công tuyến.
2.3
Đặc tả chức năng
12
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
2.3.1
Đặc tả use case phân quyền người dùng
Bảng 2.1: Đặc tả use case phân quyền người dùng.
Mã use UC006
case
Tên use case
Phân quyền người dùng
Tác
nhân
Người quản trị hệ thống
Tiền
điều
kiện
Người dùng đã đăng nhập thành công vào hệ thống, đang ở giao diện
quản lý tài khoản người dùng
Luồng
sự kiện
chính
Luồng
sự kiện
phát
sinh
Hậu
điều
kiện
13
STT
1
2
Thực hiện bởi
Người dùng
Hệ thống
3
4
5
Người dùng
Người dùng
Hệ thống
6
Người dùng
7
Hệ thống
8
9
Người dùng
Hệ thống
5a
Hệ thống
5a
Hệ thống
9a
Hệ thống
9a
Hệ thông
Không
Hành động
Chọn thêm mới tài khoản
Hiển thị giao diện thêm mới tài
khoản
Chọn quyền cho tài khoản mới
Chọn tạo tài khoản mới
Thông báo tạo tài khoản mới
thành công
Chọn cập nhật quyền tài khoản
hiện có
Hiển thị bảng thông tin phân
quyền của tài khoản
Cập nhật quyền cho tài khoản
Thông báo cập nhật quyền thành
công
Thông báo chưa chọn đơn vị
quản lý cho tài khoản
Thông báo chưa chọn nhóm
quyền quản lý cho tài khoản
Thông báo đơn vị quản lý không
được để trống
Thông báo nhóm quyền không
được để trống
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
2.3.2
Đặc tả use case cập nhật thông tin tuyến trong ngày
Bảng 2.2: Đặc tả use case cập nhật thông tin tuyến trong ngày.
Mã use UC001
case
Tên use case
Cập nhật thông tin tuyến trong
ngày
Tác
nhân
Người vận hành/ quản trị
Tiền
điều
kiện
Người dùng đã đăng nhập thành công vào hệ thống, đang ở giao diện
giám sát trực tuyến
Luồng
sự kiện
chính
STT
1
Thực hiện bởi
Người dùng
2
3
Hệ thống
Người dùng
4
5
Người dùng
Hệ thống
Luồng
sự kiện
phát
sinh
3a
Người dùng
5a
Hệ thông
Hậu
điều
kiện
Không
2.3.3
Hành động
Chọn tuyến trong ngày cần cập
nhật (tuyến đang chạy và sắp
chạy)
Hiển thị thông tin tuyến
Thực hiện chỉnh sửa thông tin
tuyến
Chọn cập nhật thông tin tuyến
Thông báo cập nhật thông tin
tuyến thành công
Chỉnh sửa số điểm của hành trình
tuyến không thoả mãn số lượng
điểm tối thiểu
Thông báo số điểm giao dịch
thuộc hành trình không thoả mãn
Đặc tả use case xem lịch sử chạy tuyến
14
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.3: Đặc tả use case xem lịch sử chạy tuyến.
Mã use UC002
case
Tên use case
Xem lịch sử chạy tuyến
Tác
nhân
Người vận hành/ quản trị
Tiền
điều
kiện
Người dùng đã đăng nhập thành công vào hệ thống, đang ở giao diện
quản lý lịch sử
STT
1
2
Thực hiện bởi
Người dùng
Người dùng
Hành động
Lọc tìm danh sách tuyến
Chọn tuyến cần xem lịch sử
3
Hệ thống
4
Người dùng
5
Hệ thống
Hiển thị hành trình tuyến và lịch
sử chạy thực tế của xe được phân
công chạy tuyến
Chọn xem hành trình theo thời
gian
Hiển thị biểu tượng xe di chuyển
theo thời gian trên lịch sử chạy
Luồng
sự kiện
phát
sinh
3a
Hệ thống
5a
Hệ thông
Hậu
Không
Luồng
sự kiện
chính
Thông báo không có lịch sử xe
chạy của tuyến này
Thông báo không có lịch sử chạy
xe
điều
kiện
2.3.4
15
Đặc tả use case xem lịch sử chạy xe
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.4: Đặc tả use case xem lịch sử chạy xe.
Mã use UC003
case
Tên use case
Xem lịch sử chạy xe
Tác
nhân
Người vận hành/ quản trị
Tiền
điều
kiện
Người dùng đã đăng nhập thành công vào hệ thống, đang ở giao diện
quản lý lịch sử
Luồng
sự kiện
chính
Luồng
sự kiện
phát
sinh
Hậu
điều
kiện
2.3.5
STT
1
Thực hiện bởi
Người dùng
Hành động
Chọn lọc lịch sử chạy xe theo
ngày
2
3
Người dùng
Hệ thống
4
Người dùng
5
Hệ thống
Chọn xem lịch sử
Hiển thị lịch sử chạy xe và các
cảnh báo
Chọn xem hành trình theo thời
gian
Hiển thị biểu tượng xe di chuyển
theo thời gian trên lịch sử chạy
3a
Hệ thống
3a
Hệ thống
5a
Hệ thông
Thông báo không có lịch sử chạy
xe trong ngày này
Thông báo quãng thời gian quá
dài, hãy chọn xem lịch sử trong
một ngày
Thông báo không có lịch sử chạy
xe trong ngày đã chọn
Không
Đặc tả use case cập nhật hành trình tuyến mẫu
16
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.5: Đặc tả use case cập nhật hành trình tuyến mẫu.
Mã use UC004
case
Tên use case
Cập nhật hành trình tuyến mẫu
Tác
nhân
Người vận hành/ quản trị
Tiền
điều
kiện
Người dùng đã đăng nhập thành công vào hệ thống, đang ở giao diện
quản lý tuyến mẫu
STT
1
Thực hiện bởi
Người dùng
Hành động
Chọn lọc tuyến mẫu cần cập nhật
lịch sử
2
Hệ thống
3
Người dùng
4
5
Người dùng
Hệ thống
Hiển thị thông tin hành trình của
tuyến mẫu
Cập nhật danh sách điểm giao
dịch của tuyến mẫu
Chọn lưu hành trình tuyến mẫu
Thông báo cập nhật hành trình
tuyến mẫu thành công
Luồng
sự kiện
phát
sinh
3a
Hệ thống
5a
Hệ thông
Hậu
điều
kiện
Không
Luồng
sự kiện
chính
2.3.6
17
Thông báo số điểm giao dịch
trong hành trình không được nhỏ
hơn 2
Thông báo lỗi cập nhật không
thành công
Đặc tả use case phân công tuyến
CHƯƠNG 2. KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Bảng 2.6: Đặc tả use case phân công tuyến.
Mã use UC005
case
Tên use case
Phân công tuyến
Tác
nhân
Người vận hành/ quản trị
Tiền
điều
kiện
Người dùng đã đăng nhập thành công vào hệ thống, đang ở giao diện
phân công tuyến
Luồng
sự kiện
chính
STT
1
2
Thực hiện bởi
Người dùng
Hệ thống
3
Người dùng
4
5
Người dùng
Hệ thống
Luồng
sự kiện
phát
sinh
5a
Hệ thống
5a
Hệ thông
Hậu
điều
kiện
Không
Hành động
Chọn tạo phân công tuyến mới
Hiển thị giao diện phân công
tuyến mới
Chọn danh sách cán bộ và thiết
bị tham gia phân công
Chọn lưu phân công tuyến
Thông báo tạo phân công tuyến
thành công
Thông báo cán bộ hoặc thiết bị
đã được phân công
Thông báo tạo phân công mới
không thành công
18
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
Chương 2 đã khảo sát và phân tích yêu cầu hệ thống. Trong chương 3 này, tôi sẽ
trình bày về các công nghệ sử dụng để phát triển hệ thống giám sát xe chuyên dụng
trong ngân hàng. Hệ thống được chia thành hai phần frontend và backend. Phía
frontend sử dụng thư viện ReactJs và Ant Design để xây dựng giao diện. Ngoài
ra, để hỗ trợ trong việc sử dụng Google Map API, tôi có sử dụng thêm hai thư
viện react-geocode và @react-google-maps/api. Phía backend sử dụng công nghệ
ASP.Net Core và Microsoft Sql Server để lưu trữ dữ liệu.
3.1
Frontend
3.1.1
ReactJs
ReactJs [3] là một thư viện javascript được sử dụng để xây dựng giao diện người
dùng cho các ứng dụng chạy trên nền tảng web. React giúp tạo giao diện người
dùng dễ tương tác. Các ứng dụng web được viết bằng ReactJs chạy nhanh và đạt
được hiệu năng cao. Nguyên nhân là do các ứng dụng ReactJs chỉ cập nhật các
phần giao diện có liên quan đến phần dữ liệu bị thay đổi. Dưới đây là một số điểm
nổi bật của ReactJs:
Component-Based: ứng dụng ReactJs được xậy dựng dựa trên việc liên kết các
thành phần (component) nhỏ lại với nhau. Do đó, thay vì phải quan tâm đến việc
xây dựng cả một giao diện lớn hoàn chỉnh, chúng ta sẽ quan tâm đến việc xây dựng
các component nhỏ (ví dụ như một nút bấm, một select box, một menubar. . . ), rồi
ghép nối chúng lại với nhau để được một giao diện hoàn chỉnh. Điều đó giúp việc
thực hiện và gỡ lỗi chương trình trở nên dễ dàng hơn.
React sử dụng JSX (javascript XML), là một loại cú pháp javascript mở rộng,
giúp trộn các đoạn mã HTML vào trong mã javascript, thay vì việc phải nối chuỗi
các đoạn HTML lại với nhau. JSX cũng được tối ưu trong quá trình biên dịch, do
đó khi chạy nó cũng sẽ nhanh hơn khi viết với file javascript thông thường.
ReactJs sử dụng luồng dữ liệu một chiều (one-way binding), khác với các framework javascript khác như angular, sử dụng luồng dữ liệu hai chiều (two-way binding). Dữ liệu sẽ được truyền theo một chiều từ component cha đến các component
con. Điều này cũng giúp chúng ta kiểm soát luồng dữ liệu một cách tốt hơn.
ReactJs sử dụng Virtual DOM. Virtual DOM tồn tại và ánh xạ song song với
DOM thật. Khi có dữ liệu bị thay đổi, Virtual DOM sẽ lấy trạng thái ngay trước đó
và so sánh với trạng thái hiện tại, xem những phần nào bị thay đổi và chỉ thực hiện
cập nhật giao diện liên quan đến những phần bị thay đổi đó. Do đó, ứng dụng web
19
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
được viết bằng ReactJs chạy nhanh và đạt được hiệu năng cao.
3.1.2
Ant Design
3.1.3
React Geocode
Một trong những thao tác quan trọng nhất khi làm việc với Goolge Map API là
chuyển từ địa chỉ cụ thể sang toạ độ địa lý và ngược lại. Việc này giúp ích trong
việc thiết kế một số chức năng trong hệ thống giám sát xe chuyên dùng của ngân
hàng như: từ việc biết toạ độ địa lý hiện tại của xe ta sẽ hiển thị địa chỉ hiện tại
của xe trên màn hình, thêm toạ độ của điểm giao dịch bằng cách nhập địa chỉ cụ
thể của điểm giao dịch đó... React Geocode [4] chính là thư viện giúp xử lý những
công việc đó. Thư viện này sử dụng Google Maps Geocoding API, một API giúp
xử lý công việc chuyển đổi giữa toạ độ và địa chỉ nêu trên. Để làm việc với API
này thì cần có API key. Dưới đây là một số phương thức thư viện React Geocode
cung cấp.
Bảng 3.1: Các phương thức React Geocode.
STT
tên phương thức
Mô tả
1
setApiKey
Chỉ định key để sử dụng Google Map Geocode
API
2
setLanguage
Chỉ định ngôn ngữ để phân tích cú pháp khi
chuyển đổi, mặc định là tiếng anh
3
setRegion
Chỉ định khu vực để phân tích cú pháp khi
chuyển đổi
4
setLocationType
Chỉ định định dạng của địa chỉ sau khi đã
chuyển đổi
5
enableDebug
Chỉ định cho phép ghi log
6
fromLatLng
Chuyển đổi từ toạ độ địa lý thành địa chỉ, đầu
vào là cặp kinh độ, vĩ độ
7
fromAddress
Chuyển đổi từ địa chỉ cụ thể sang toạ độ địa lý,
đầu vào là địa chỉ cụ thể
3.1.4
@react-google-maps/api
Thư viện @react-google-maps/api [5] cung cấp các component react có sẵn để
làm việc với Google Map API một cách dễ dàng. Sau đây là một số component
chính được sử dụng để phát triển hệ thống giám sát xe chuyên dùng trong ngân
hàng.
• Google Map: component giúp hiển thị bản đồ.
20
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
• Marker: component đánh dấu các điểm chỉ định lên bản đồ. Biểu tượng đánh
dấu có thể dùng các biểu tượng có sẵn của Google Map hoặc ảnh. Component
này được sử dụng để đánh dấu vị trí các xe và điểm giao dịch trên bản đồ.
• InfoBox: component được sử dụng để hiển thị các thông tin chú thích thêm cho
Marker khi nhấn vào biểu tượng của Marker. Component này được sử dụng để
hiển thị thông tin chi tiết các điểm giao dịch trên bản đồ.
• DirectionRender: component giúp hiển thị tuyến đường đi giữa các điểm chỉ
định trên bản đồ. Component này được sử dụng để hiển thị đường đi của tuyến
mẫu trên bản đồ.
• DirectionService: component này được dùng để bọc component DirectionRender, đầu vào là danh sách các điểm cần định tuyến đường đi, kết quả trả về
là tuyến đường giữa các điểm và component DirectionRender sẽ lấy kết quả
đó để hiển thị đường đi.
• Polyline: component hỗ trợ việc kẻ đường thẳng giữa các điểm trên bản đồ.
Đầu vào sẽ là danh sách kinh độ, vĩ độ giữa các điểm. Component này được
sử dụng để vẽ đường đi, lịch sử chạy của các xe.
• AutoComplete: component này là một ô nhập liệu, khi nhập địa chỉ sẽ hiển thị
danh sách các địa điểm gợi ý bên dưới và toạ độ tương ứng của các địa điểm
này. Component này được sử dụng để nhập thông tin của các điểm giao dịch.
3.2
Backend
3.2.1
ASP.Net core
ASP.Net core [6] là một framework mã nguồn mở, đa nền tảng giúp xây dựng
các ứng dụng hiện đại, hỗ trợ kết nối đám mây, internet. Với ASP.Net core chúng
ta có thể:
• Xây dựng các ứng dụng web, app, IOT hoặc các ứng dụng di động.
• Sử dụng các công cụ phát triển trên cả ba nền tảng Windows, Linux, MacOS.
• Triển khai trên môi trường đám mây.
• Chạy trên nền tảng .Net core.
Một số đặc điểm nổi bật của ASP.NET core:
• Thống nhất việc xây dựng giao diện và web APIs.
• Dễ dàng triển khai test.
• Razor Pages giúp xây dựng giao diện dễ dàng và hiệu quả hơn.
• Blazor giúp có thể lồng các đoạn mã javascript vào trong các đoạn mã C#.
21
CHƯƠNG 3. CÔNG NGHỆ SỬ DỤNG
Chia sẻ logic giữa server và client, tất cả được viết bằng ngôn ngữ C#.
• Phát triển ứng dụng đa nền tảng.
• Mã nguồn mở và cộng đồng rộng lớn.
• Hỗ trợ Remote Procedure Call (RPC) sử dụng gRPC.
• Tích hợp sẵn các cấu hình cho việc triển khai trên môi trường đám mây.
• Tích hợp sẵn Dependence Injection.
• ...
3.2.2
Microsoft Sql Server
Microsoft Sql Server [7] là một hệ quản trị cơ sở dữ liệu quan hệ được phát triển
bởi Microsoft. Là một máy chủ cơ sở dữ liệu, nó là một sản phẩm phần mềm có
chức năng chính là lưu trữ và truy xuất dữ liệu theo yêu cầu của các ứng dụng phần
mềm khác. Có thể chạy trên cùng một máy tính hoặc trên một máy tính khác trên
mạng (bao gồm cả Internet).
Microsoft tiếp thị ít nhất một chục phiên bản Microsoft Sql Server khác nhau,
nhắm vào các đối tượng khác nhau và cho khối lượng công việc khác nhau, từ các
ứng dụng máy đơn nhỏ đến các ứng dụng Internet lớn có nhiều người dùng đồng
thời.
Hai công nghệ ASP.Net Core và Microsoft Sql Server đều được phát triển bởi
Miccrosoft. Do đó, tôi quyết định sử dụng hai công nghệ trên để phát triển backend
vì chúng kết hợp với nhau rất tốt, có cộng đỗ hỗ trợ rộng lớn, dễ dàng tìm được sự
hỗ trợ khi gặp lỗi trong quá trình phát triển chương trình.
22
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Trong các chương trước, tôi đã khảo sát, phân tích yêu cầu và tìm hiểu các công
nghệ liên quan đến việc phát triển phần mềm. Chong chương 4 này, tôi sẽ trình bày
tổng quan kiến trúc hệ thống, thiết kế chi tiết hệ thống cũng như kết quả đạt được,
kiểm thử và triển khai hệ thống.
4.1
Thiết kế kiến trúc
4.1.1
Lựa chọn kiến trúc phần mềm
Để có thể dễ dàng trong việc phát triển, triển khai, bảo trì ứng dụng, tôi quyết
định phát triển ứng dụng theo kiến trúc Microservice.
Microservice là kiến trúc thiết kế phần mềm, chia phần mềm thành nhiểu dịch
vụ nhỏ, độc lập với nhau, làm giảm sự trùng lặp, tăng sự gắn kết và dễ dàng kết nối
giữa các bộ phận thông qua giao thức RESTful API, do đó làm cho các thành phần
của hệ thống tổng thể dễ hiểu hơn, dễ mở rộng hơn và dễ thay đổi hơn. Dưới đây là
một số ưu điểm của microservie.
• Linh động trong việc chọn công nghệ để triển khai các service, do đó các
service sẽ dễ dàng phát triển, thử nghiệm, triển khai.
• Dễ dàng bảo trì do mỗi service là độc lập.
• Tăng hiệu suất phát triển, mỗi service được phát triển độc lập, không phụ
thuộc vào service khác.
• Khả năng mở rộng theo chiều ngang, giúp các service luôn sẵn sàng đáp ứng.
• ...
Bên cạnh đó thì thiết kế ứng dụng theo kiến trúc Microservice vẫn còn tồn tại
những nhược điểm sau:
• Quá trình triển khai sẽ phức tạp do mỗi service được thiết kế khác nhau.
• Đòi hỏi phải tính toán độ lớn của service, nếu không nó sẽ trở thành nguyên
khối nếu quá lớn, hoặc chia quá nhỏ thì sẽ có quá nhiều service gây khó khăn
trong việc quản lý.
• Bảo mật với mỗi service.
• ...
Từ các phân tích trên, ứng dụng giám sát xe chuyên dùng trong ngân hàng sẽ có
kiến trúc như sau:
23
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.1: Kiến trúc tổng quát hệ thống.
Hình 4.1 mô tả kiến trúc tổng quát của hệ thống. Hệ thống bao gồm các thành
phần chính: (i) thành phần giao diện được người dùng truy cập thông qua web
browser, (ii) hệ thống giám sát xe chuyên dùng, (iii) service nhận thông tin từ thiết
bị và cập nhật vào cơ sở dữ liệu (bao gồm các thông tin trạng thái trực tuyến, lịch
sử, cảnh báo...), (iv) service thực hiện chức năng trích xuất báo cáo.
Người dùng sẽ sử dụng web browser truy cập vào giao diện giám sát xe chuyên
dùng. Thành phần giao diện sẽ gửi yêu cầu lấy dữ liệu từ hệ thống giám sát xe
chuyên dùng.
Hệ thống giám sát xe chuyên dùng sẽ xác thực và phân quyền người dùng để
truy cập vào cơ sở dữ liệu lấy dữ liệu tương ứng trả về cho thành phần giao diện.
Service nhận thông tin từ thiết bị sẽ cập nhật thông tin vào cơ sở dữ liệu. Hệ
thống giám sát sẽ lấy dữ liệu này để gửi và hiển thị trạng thái trực tuyến, lịch sử,
cảnh báo của xe lên thành phần giao diện.
Service trích xuất báo cáo sẽ trích xuất thông tin từ lịch sử. trạng thái xe, thiết
bị và lưu vào cơ sở dữ liệu. Hệ thống giám sát sẽ lấy dữ liệu này để hiển thị báo cáo
tổng hợp.
24
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
4.1.2
Thiết kế tổng quan
Hình 4.2: Biểu đồ phụ thuộc gói.
Hình 4.2 là biểu đồ thể hiện sự phụ thuộc gói. Trong đó các gói có vai trò như
sau.
Thành phần giao diện:
• Gói Components chứa các thành phần giao diện.
• Gói Configs chứa các thông tin cấu hình của phần mềm.
• Gói Stores chứa thông tin lưu trữ các trạng thái của giao diện phần mềm.
• Gói Handle chứa các hàm xử lý logic cho giao diện.
• Gói Utils chứa các hàm tiện ích.
• Gói DTOs chứa các lớp định nghĩa các đối tượng sử dụng chung.
Thành phần server:
• Gói Controlers chứa các hàm xử lý logic và trả về dữ liệu.
• Gói Services chứa các hàm làm việc với cơ sở dữ liệu.
• Gói Repositories chứa các định nghĩa hàm xử lý dữ liệu và kết quả trả về.
• Gói Models chứa các lớp định nghĩa các bảng trong cơ sở dữ liệu.
• Gói Utils chứa các hàm tiện ích.
• Gói Middlewares chứa các hàm xử lý trung gian giữa yêu cầu người dùng và
25
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
controler.
4.1.3
Thiết kế chi tiết gói
Hình 4.3: Thiết kế chi tiết gói backend.
26
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.3 mô tả thiết kế chi tiết các gói trong backend server quản lý xe chuyên
dùng. Trong đó các gói controllers sẽ gọi các gói trong service để lấy dữ liệu. Các
gói trong service sẽ thực thi các gói trong repositories đã được định nghĩa các hàm
với kết quả trả về. Các hàm này sử dụng các gói trong models để làm việc với các
dữ liệu trong cơ sở dữ liệu. Các gói trong services sẽ sử dụng các hàm tiện ích trong
gói utils.
27
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.4: Thiết kế chi tiết gói frontend.
Hình 4.3 mô tả thiết kế chi tiết các gói trong giao diện quản lý xe chuyên dùng.
Các thành phần trong gói component là các thành phần chung nhất, trong đó sẽ có
chứa các component con liên quan đến nhau (Ví dụ trong thành phần History sẽ có
chứa các component như History, HistoryList)
28
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
4.2
Thiết kế chi tiết
4.2.1
Thiết kế giao diện
a, Thiết kế mockup
Hình 4.5: Thiết kế mockup hệ thống giám sát xe chuyên dùng.
Hình 4.5 miêu tả thiết kế mockup của giao diện giám sát xe chuyên dùng. Giao
diện có giao diện gồm 3 phần chính đó là Header, Sidebar, Content. Trong đó có
hai phần cố định đó là Header và SideBar, chỉ có phần content nội dung sẽ thay đổi
theo các chức năng mà người dùng chọn.
Toàn bộ giao diện trang web được sử dụng chung cấu hình như bảng 4.1.
Bảng 4.1: Các cấu hình chung của giao diện trang web
Thuộc tính
Cấu hình
Độ phân giải HD (1280x720), Full HD (1920x1080)
màn hình
Màu nền
Xám nhạt (#f4f6f9)
Màu lỗi
Đỏ (#ff4d4f)
Màu thành công
Xanh lá (#2fd351)
Font chữ
Sans-serif
Font chữ đậm
600
Bo góc
1px
Xem tiếp ở trang sau
29
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Bảng 4.1 – Các cấu hình chung – Tiếp theo
Màu viền
Xám (#797979)
Vị trí hiển thị Phía trên bên phải màn hình
thông báo
b, Các thành phần giao diện
Hình 4.6: Các thành phần giao diện.
Hình 4.6 miêu tả các thành phần giao diện. Đầu tiên khi truy cập ứng dụng,
nếu chưa đăng nhập, người dùng sẽ được điều hướng sang trang đăng nhập, nếu
đã đăng nhập rồi thì sẽ chuyển hướng sang trang bảng điều khiển. Trang bảng điều
khiển gồm 3 thành phần chính đó là phần Navbar (có các điều hướng để chuyển
nội dung của phần content), Header (Chứa một vài menu nhỏ như đăng xuất, chỉnh
sửa thông tin. . . ) và Content (Hiển thị các nội dung chính của trang điều khiển).
30
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
4.2.2
Thiết kế API
Thành phần frontend và backend giao tiếp với nhau thông qua REST API. API
được thiết kế đường dẫn theo nguyên tắc: / + (Tên resoure) (Để ở danh từ số nhiều)
+ / + (Định danh) (Sử dụng trong trường hợp muốn lấy, cập nhật hoặc xoá một đối
tượng theo định danh). Các API cùng đường dẫn phân biệt với nhau bằng phương
thức (GET, POST, PUT, DELETE, PATCH).
Các nhóm resource gồm có: user (người dùng), unit (đơn vị), permission (quyền),
scope (nhóm quyền), car (xe), device (thiết bị), member (cán bộ), rfid (thẻ định
danh rfid), online (trạng thái trực tuyến của xe), history (lịch sử), transaction point
(điểm giao dịch), route (tuyến mẫu), segmentation (phân công), report (báo cáo).
Ví dụ API với resource là car:
• Lấy danh sách xe: GET /cars.
• Thêm thông tin xe mới: POST /cars.
• Sửa thông tin xe với ID là 1: PUT /cars/1.
• Xoá xe với ID là 1: DELETE /cars/1.
31
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
4.2.3
Thiết kế lớp
a, Thiết kế lớp thuốc chức năng quản lý phân công
Hình 4.7: Thiết kế các lớp thuộc chức năng quản lý phân công tuyến.
32
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.8: Biểu đồ trình tự usecase quản lý phân công tuyến.
Hình 4.8 mô tả các thao tác quản lý phân công tuyến từ khi tạo phân công tuyến
mới đến giám sát phân công tuyến trực tuyến. Đầu tiên người dùng sẽ tạo phân công
tuyến mới ở giao diện phân công tuyến. Sau đó, người dùng sẽ vào giao diện quản
lý trực tuyến. Ở giao diện quản lý trực tuyến sẽ hiển thị các phân công tuyến đang
chạy và sắp chạy trong ngày. Người dùng có thể thực hiện thay đổi tuyến đường đi,
thời gian khởi hành và kết thúc của các phân công tuyến đang chạy và sắp chạy.
33
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
b, Thiết kế lớp thuộc chức năng quản lý người dùng
Hình 4.9: Thiết kế các lớp thuộc chức năng quản lý người dùng.
34
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.10: Biểu đồ trình tự usecase quản lý phân người dùng.
Hình 4.10 mô tả các thao tác quản lý người dùng từ việc lập tài khoản cho đến
việc đăng nhập vào hệ thống. Đầu tiên tài khoản người dụng sẽ được tạo ở giao
diện quản lý người dùng. Sau đó, tài khoản sẽ được chỉnh sửa quyền, nhóm quyền
và đơn vị quản lý. Sau khi được chỉnh sửa quyền và đơn vị quản lý, người dùng sẽ
thực hiện đăng nhập vào hệ thống. Nếu đăng nhập thành công, mã token sẽ được
trả lại và lưu vào cookie của trình duyệt, phục vụ thao tác phân quyền khi gọi API,
người dùng được chuyển hướng đến các giao diện quản lý. Nếu đăng nhập thất bại
thì đưa ra thông báo và người dùng thực hiện đăng nhập lại.
35
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
4.2.4
Thiết kế cơ sở dữ liệu
Hình 4.11: Biểu đồ thực thể liên kết (E-R diagram).
Hình 4.11 là biểu đồ thực thể liên kết biểu thị các thực thể chính của hệ thống.
Mỗi người (user) dùng sẽ quản lý một số đơn vị (unit) và thuộc một nhóm quyền
(scope). Một nhóm (scope) quyền sẽ có nhiều quyền (permission). Một đơn vị
(unit) sẽ quản lý bao gồm nhiều xe (car). Mỗi xe gồm các thiết bị (device) được
định danh bởi mã IMEI. Một đơn vị (unit) quản lý nhiều cán bộ (member). Cán bộ
(member) sẽ có 3 loại chính đó là: lái xe, chủ hàng, kỹ thuật viên ATM. Cán bộ
(member) và xe (car) được định danh bằng 1 thẻ rfid duy nhất. Một đơn vị (unit)
sẽ có nhiều điểm giao dịch (transaction point) và nhiều tuyến mẫu (sample route).
Mỗi tuyến mẫu (sample route) là một danh sách các điểm giao dịch (transaction
point). Một đơn vị (unit) sẽ có nhiều phân công tuyến (segmentation). Mỗi phân
công tuyến (segmentation) bao gồm một tuyến mẫu (sample route), 1 xe (car) và 3
cán bộ (member) bao gồm: lái xe, chủ hàng và kỹ thuật viên ATM. Xe (car) sẽ có
nhiều lịch sử (history), một trạng thái trực tuyến (online) và nhiều báo cáo (report)
36
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.12: Biểu đồ thiết kế cơ sở dữ liệu.
.
Các bảng dưới đây sẽ mô tả cấu trúc chi tiết các bảng của cơ sở dữ liệu
37
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Bảng 4.2: Thiết kế chi tiết bảng User.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của người dùng
UserName
varchar(20)
Có
Tên đăng nhập
Password
varchar(MAX)
Có
Mật khẩu (Lưu chuỗi băm)
Status
bit
Có
Trạng thái hoạt động
ScopeId
int
Không
Id của nhóm quyền
.
Bảng 4.3: Thiết kế chi tiết bảng Scope.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của nhóm quyền
Name
nvarchar(255)
Có
Tên nhóm quyền
AllowedRoutes
nvarchar(255)
Có
Danh sách các giao diện được
phép truy cập
.
Bảng 4.4: Thiết kế chi tiết bảng Permission.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của quyền
Resource
nvarchar(255)
Có
Tên tài nguyên
Url
varchar(50)
Có
Đường dẫn API
Method
varchar(10)
Có
Phương thức gọi API
Action
nvarchar(255)
Có
Đặc tả hành động
Filter
varchar(10)
Không
Đối tượng lọc
FilterValue
varchar(MAX)
Không
Giá trị lọc
.
38
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Bảng 4.5: Thiết kế chi tiết bảng ScopePermission.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id định danh
Allowed
bit
Có
Có cho phép truy cập quyền
Filter
varchar(MAX)
Không
Các giá trị lọc
PermissionId
int
Có
Id của quyền
ScopeId
int
Có
Id của nhóm quyền
.
Bảng 4.6: Thiết kế chi tiết bảng Unit.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của đơn vị
Name
nvarchar(255)
Có
Tên đơn vị
.
Bảng 4.7: Thiết kế chi tiết bảng UserUnit.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id định danh
UnitId
int
Có
Id của đơn vị
UserId
int
Có
Id của người dùng
.
4.3
Xây dựng ứng dụng
4.3.1
Thư viện và công cụ sử dụng
Trong quá trình xây dựng ứng dụng giám sát xe chuyên dùng, tôi có sử dụng các
công cụ, ngôn ngữ lập trình, thư viện được liệt kê ở trong bảng 4.8 dưới đây.
39
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Bảng 4.8: Danh sách công cụ và thư viện sử dụng.
Mục đích
Công cụ
Địa chỉ URL
IDE lập trình backend Visual Studio
https://visualstudio
.microsoft.com/
IDE lập trình fron- Visual Studio Code
https://code.visuals
tend
tudio.com/
Ngôn ngữ lập trình C#
backend
https://docs.microso
ft.com/en-us/dotnet
/csharp/
Công nghệ backend
ASP.NET core
https://docs.microso
ft.com/en-us/aspnet
/core/
Công nghệ frontend
ReactJs
https://reactjs.org/
Lưu trữ dữ liệu
Sql Server
https://www.microsof
t.com/en-us/sql-ser
ver/
Thư viện tạo file PDF DinkToPdf
cho backend
https://github.com/r
dvojmoc/DinkToPdf
Thư viện xử lý thời Moment
gian cho frontend
https://momentjs.com
/
Thư viện giao diện Ant Design
React
https://ant.design/
Thư viện quản lý Redux
trạng thái cho ứng
dụng React
https://redux.js.org
/
Thư viện cung cấp @react-googlecác React component masp/api
xử lý về Google Map
https://react-googl
e- maps- api- docs.ne
tlify.app/
Thư viện xử lý chuyển react-geocode
https://github.com/s
đổi giữa địa điểm và
toạ độ
hukerullah/react-geo
code#readme/
.
4.3.2
Kết quả đạt được
Sau khi thực hiện đồ án, tôi đã thực hiện xây dựng được được hệ thống giám
sát xe chuyên dùng của ngân hàng với đầy đủ các chức năng đặt ra trong mục tiêu
40
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
đồ án. Các chức năng chính có thể kể đến như: (i) quản lý tài nguyên bao gồm cán
bộ, thiết bị, điểm giao dịch và xây dựng tuyến mẫu, (ii) phân công và giám sát hệ
thống xe trực tuyến, (iii) quản lý lịch sử tuyến và lịch sử chạy xe, (iv) quản lý báo
cáo của hệ thống xe, (v) phân quyền động người sử dụng hệ thống thông qua các
hành động và đơn vị quản lý.
Bảng dưới đây sẽ liệt kê chi tiết các thông tin về ứng dụng.
Bảng 4.9: Danh mục kết quả mã nguồn
Mục
Frontend
Backend
Số dòng code(nghìn)
10,2
4,3
Số lớp (file)
97
112
Số gói (Package/ Folder)
12
1
Dung lượng mã nguồn(MB)
1.13
0.2
Dung lượng đóng gói(MB)
9.31
17
.
4.3.3
Minh họa các chức năng chính
a, Chức năng giám sát trực tuyến
Hình 4.13: Giao diện giám sát trực tuyến.
Hình 4.13 là giao diện giám sát trực tuyến. Màn hình hiển thị các thành phần
như: danh sác trạng thái các xe quản lý phía bên trái, phần bản đồ hiển thị ví trí
các xe và tuyến đường chạy ở chính giữa, danh sách các tuyến đang chạy và sắp
chạy ở phía bên phải màn hình. Khi nhấn vào một tuyến đang chạy, bản đồ sẽ hiển
41
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
thị tuyến đường của tuyến mẫu, vị trí hiện tại của xe được phân công, lịch sử chạy
tuyến của xe từ khi khởi hành đến thời điểm hiện tại như hình 4.14 .
Hình 4.14: Giao diện lịch sử chạy tuyến trực tuyến.
Ngoài ra chúng ta còn thể xem hành trình chạy tuyến theo thời gian của xe để
xác định xem xe có chạy theo đúng như thời gian được phân công. Để xem lịch sử
hành trình, nhấn chọn vào mục lịch sử chạy xe và nhấn chọn nút chức năng bắt đầu.
Chức năng được miêu tả ở hình.
Hình 4.15: Giao diện xem hành trình chạy tuyến trực tuyến.
Các tuyến đang chạy cũng có thể cập nhật hành trình bằng cách nhấn vào biểu
tượng dấu cộng bên cạnh mã tuyến đang chạy. Khi đó một bảng thông tin của tuyến
đang chạy sẽ hiện ra và chúng ta có thể thực hiện cập nhật hành trình tuyến.
42
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.16: Giao diện cập nhật hành trình tuyến đang chạy.
b, Chức năng quản lý lịch sử
Hình 4.17: Giao diện quản lý lịch sử.
Hình 4.17 là giao diện quản lý lịch sử. Màn hình bao gồm các thành phần chính
như: bản đồ hiển thị tuyến đường ở chính giữa màn hình, bảng chọn xem lịch sử
tuyến và lịch sử xe ở phía bên trái, các thông tin thống kê và lịch sử chạy xe theo
thời gian ở phía bên phải ở phía bên phải.
Người dùng chọn xem lịch sử chạy tuyến bằng cách chọn tìm danh sách các
tuyến theo ngày và nhấn vào dòng hiển thị tuyến trên bảng danh sách tuyến. Khi
đó trên bản đồ sẽ hiển thị tuyến đường của tuyến mẫu và lịch sử chạy tuyến của xe
được phân công như hình 4.18.
43
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.18: Giao diện quản lý lịch sử tuyến.
Tương tự đối với lịch sử chạy của xe. Người dùng chọn thời điểm bắt đầu và kết
thúc xem lịch sử của xe chỉ định. Bản đồ sẽ hiển thị lịch sử chạy của xe theo thời
gian bắt đầu và kết thúc đã chọn.
Khi xem lịch sử, bảng phía bên phải sẽ hiển thị một số thông tin thống kê như
tốc độ trung bình, tốc độ tối thiểu, tốc độ tối đa và quãng đường chạy của xe. Phía
dưới bảng thống kê là lịch sử chạy của xe theo thời gian. Có thể theo dõi quá trình
chạy bằng cách nhấn nút chức năng bắt đầu.
44
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.19: Giao diện thống kê và quá trình chạy xe.
c, Chức năng quản lý nhóm quyền
Hình 4.20: Giao diện quản lý nhóm quyền.
Hình 4.20 là giao diện quản lý nhóm quyền. Màn hình hiển thị danh sách các
nhóm quyền ở phía bên tay trái. Bên phải màn hình là danh sách các quyền mà
người dùng có thể cập nhật cho nhóm quyền, hệ thống đồng thời cũng sẽ phân
quyền ở phía giao diện đối với từng nhóm quyền cụ thể.
45
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Như hình 4.20 đã miêu tả, nhóm quyền test được phân quyền truy cập trên giao
diện vào hai giao diện là giám sát và quản lý lịch sử. Hình 4.21 miêu tả danh sách
các giao diện mà nhóm quyền test có thể truy cập sau khi đăng nhập.
Hình 4.21: Giao diện menu của nhóm quyền test.
Người dùng có thể thêm nhóm quyền mới bằng cách chọn nút chức năng thêm
nhóm quyền, khi đó một cửa sổ thêm nhóm quyền sẽ hiển thị. Tại đây người dùng
có thể chọn các quyền cho nhóm quyền mới.
46
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Hình 4.22: Giao diện thêm mới nhóm quyền.
4.4
Kiểm thử
Phương pháp kiểm thử sử dụng: kiểm thử hộp đen.
4.4.1
Kiểm thử chức năng quản lý người dùng và quyền
Bảng 4.10: Kiểm thử chức năng quản lý quyền và người dùng.
Test case
Đầu vào
Đầu ra mong muốn
Kết quả
Đổi mật khẩu
Tạo mật khẩu mới Người dùng có thể Đạt
cho người dùng
đăng nhập với mật
khẩu mới
Cập nhật danh sách Danh sách đơn vị Người dùng truy cập Đạt
đơn vị quản lý của mới
được tài nguyên trong
tài khoản
các đơn vị quản lý
Cập nhật nhóm Nhóm quyền mới
quyền của tài
khoản
Tạo tài khoản mới
Thông
khoản
tin
Tài khoản truy cập Đạt
API theo các quyền
của nhóm quyền mới
tài Người dùng có thể Đạt
đăng nhập với tài
khoản mới
Xem tiếp ở trang sau
47
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Bảng 4.10 – Kiểm thử chức năng quản lý quyền người dùng – Tiếp theo
Xoá tài khoản
4.4.2
Tài khoản đang sử Người dùng không Đạt
dụng
đăng nhập được tài
khoản đã bị xoá
Kiểm thử chức năng giám sát trực tuyến
Bảng 4.11: Kiểm thử chức năng giám sát trực tuyến.
Test case
Đầu vào
Đầu ra mong muốn
Kết quả
Xem danh sách và Tài khoản đã được Hiển thị danh sách và Đạt
vị trí các xe trực phân công quản lý vị trí các xe thuộc
tuyến
một số đơn vị
quản lý của đơn vị
được phân công
Chỉnh sửa tuyến Có tuyến đang Phân công tuyến được Đạt
đường các phân chạy và sắp chạy
cập nhật tuyến đường
công tuyến đang
chạy và sắp chạy
Hiển thị vị trí cụ Toạ độ của xe
thể của một xe
Hiển thị thông tin vị Đạt
trí
Xem lịch sử chạy Có thông tin lịch sử Hiển thị biểu tượng Đạt
của xe theo thời chạy tuyến
xe chạy theo thời gian
gian của các tuyến
trên bản đồ
đang chạy
Xem lịch sử chạy Không có thông tin Thông báo không có Đạt
của xe theo thời lịch sử chạy tuyến lịch sử chạy tuyến của
gian của các tuyến
xe
đang chạy
4.4.3
Kiểm thử chức năng quản lý lịch sử
48
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Bảng 4.12: Kiểm thử chức năng quản lý lịch sử.
Test case
Đầu vào
Đầu ra mong muốn
Kết quả
Xem lịch sử chạy Có lịch sử chạy Hiển thị tuyến mẫu và Đạt
tuyến
tuyến của xe
lịch sử chạy tuyến của
xe
Xem lịch sử chạy Không có lịch sử Hiển thị tuyến mẫu và Đạt
tuyến
chạy tuyến của xe
thông báo không có
lịch sử chạy tuyến của
xe
Xem lịch sử chạy Có lịch sử chạy của Hiển thị đường đi lịch Đạt
xe
xe
sử chạy của xe
Xem lịch sử chạy Không có lịch sử Thông báo không có Đạt
xe
chạy của xe
lịch sử chạy của xe
Xem lịch sử chạy Có lịch sử chạy của Hiển thị biểu tượng Đạt
xe theo thời gian
xe
xe di chuyển theo
thời gian trên lịch sử
đường đi
Xem lịch sử chạy Không có lịch sử Thông báo không có Đạt
xe theo thời gian
chạy của xe
lịch sử chạy xe
4.4.4
Kiểm thử chức năng quản lý phân công
Bảng 4.13: Kiểm thử chức năng quản lý phân công.
Test case
Đầu vào
Đầu ra mong muốn
Tạo phân công mới Điền thiêú thông Thông
tin
trường
báo
Kết quả
thiếu Đạt
Tạo phân công mới Cán bộ và thiết bị Thông báo cán bộ và Đạt
đã được phân công thiết bị đã được phân
công
Tạo phân công mới Điền đủ thông tin
Tạo mới thành công
Đạt
Chỉnh sửa tuyến Thay đổi danh sách Tuyến đường của Đạt
đường phân công
điểm giao dịch
phân công thay đổi
Xem tiếp ở trang sau
49
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Bảng 4.13 – Kiểm thử chức năng quản lý phân công – Tiếp theo
Chỉnh sửa thông Thông tin phân Thông báo cập nhật Đạt
tin phân công
công được thay đổi thành công và thông
tin phân công được
cập nhật
4.4.5
Kiểm thử chức năng quản lý báo cáo
Bảng 4.14: Kiểm thử chức năng quản lý báo cáo.
Test case
Đầu vào
Xem báo cáo dạng Có dữ liệu báo cáo
bảng
Đầu ra mong muốn
Kết quả
Hiển thị báo cáo dạng Đạt
bảng
Xem báo cáo dạng Không có dữ liệu Thông báo không có Đạt
bảng
báo cáo
dữ liệu báo cáo
Tạo file báo cáo Bảng hiển thị báo Báo cáo được lưu trên Đạt
PDF và mở xem cáo có dữ liệu
server và mở xem
trong trang mới
trong trang mới cho
người dùng
Tạo file báo cáo Bảng hiển thị báo Thông báo không có Đạt
PDF và mở xem cáo không có dữ dữ liệu xuất báo cáo
trong trang mới
liệu
Tạo file báo cáo Bảng hiển thị báo Lưu báo cáo trên Đạt
PDF và tải về máy cáo có dữ liệu
server và tải về máy
người dùng
Tạo file báo cáo Bảng hiển thị báo Thông báo không có Đạt
PDF và tải về máy
4.5
cáo không có dữ dữ liệu xuất báo cáo
liệu
Triển khai
Bảng 4.15 dưới đây liệt kê ra một số yêu cầu khi triển khai ứng dụng và kết quả
thử nghiệm.
50
CHƯƠNG 4. THỰC NGHIỆM VÀ ĐÁNG GIÁ
Bảng 4.15: Danh sách các thiết bị và công cụ triển khai hệ thống.
Thành phần
Yêu cầu
Kết quả thử nghiệm
Giao diện người dùng
OS: windows, CPU: 2.6GHz
RAM: 16G
Nền tảng: Nodejs
WebServer: IIS
Chạy ổn định
Server backend
OS: windows, CPU: 2.6GHz
RAM: 16G
Nền tảng: .Net
WebServer: IIS
Chạy ổn đỉnh
Để triển khai các dịch vụ, đối với phía server, mã nguồn sẽ được đóng gói thành
các file ddl. Còn đối với phía giao diện người dùng, mã nguồn sẽ được đóng gói
thành một file HTML truy cập duy nhất là index.html và các file javascript có dạng
main.*.js. Các mã nguồn đã được đóng gói sẽ được đẩy lên IIS để chạy thành ứng
dụng.
51
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
Trong chương này, tôi sẽ trình bày chi tiết các giải pháp và đóng góp nổi bật
trong quá trình thực hiện đồ án mà trong các chương trước chưa được làm rõ. Cụ
thể ở đây, tôi sẽ nêu ra 2 đóng góp nổi bật nhất đó là thiết kế phân quyền động
người dùng và nâng cao hiệu năng giao diện người dùng.
5.1
Thiết kế phân quyền động
5.1.1
Đặt vấn để
Hệ thống giám sát xe chuyên dùng bao gồm nhiều nghiệp vụ, chức năng khác
nhau, cũng như giám sát, quản lý thông tin của nhiều đơn vị khác nhau bao gồm
các thông tin như: cán bộ, thiết bị, lịch sử, báo cáo, điểm giao dịch, tuyến mẫu,
phân công. Vì vậy, yêu cầu đặt ra là cần phải có phân quyền đến từng người dùng
cụ thể trong hệ thống. Cụ thể việc phân quyền người dùng được thiết kế như thế
nào tôi sẽ trình bày trong mục 5.1.2.
5.1.2
Giải quyết vấn đề
Hình 5.1: Tổng quan giải pháp phân quyền.
Hệ thống sẽ quản lý nhiều đơn vị. Mỗi đơn vị lại có danh sách cán bộ và thiết bị
quản lý riêng. Vì vậy, việc phân quyền sẽ được thực hiện theo hai hướng: (1) phân
quyền theo đơn vị mà tài khoản người dùng được phân quản lý và (2) phân quyền
theo nhóm quyền của tài khoản người dùng. Như đã mô tả trong hình 5.1, mỗi thiết
bị sẽ thuộc quyền quản lý của một đơn vị duy nhất (đồng thời đối với cán bộ). Một
tài khoản người dùng sẽ được quyền quản lý nhiều đơn vị. Về mặt phân quyền theo
nhóm quyền, mỗi nhóm quyền sẽ có các quyền khác nhau trong việc thực hiện các
nghiệp vụ của hệ thống. Mỗi tài khoản người dùng sẽ chỉ thuộc một nhóm quyền
duy nhất.
52
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
Hình 5.2: Quy trình phân quyền.
Hình 5.2 thể hiện quy trình phân quyền của hệ thống. Khi người dùng gửi yêu
cầu truy cập tài nguyên, token sẽ được đính kèm trong header của http request.
Token này được trả về và lưu trữ trên trình duyệt người dùng khi người dùng thực
hiện thao tác đăng nhập, có chứa các thông tin chính như userId (định danh của
người dùng), scopeId (định danh của nhóm quyền), expired (thời gian hết hạn của
token). Authorize middleware sẽ có chức năng kiểm tra xem token của người dùng
có hợp lệ hay không. Nếu token hợp lệ, middlware này sẽ tiếp tục thực hiện kiểm
tra quyền truy cập tài nguyên đã được lưu trong cơ sở dữ liệu. Nếu không sẽ trả về
mã response status code là 401 Unauthorize (không có quyền truy cập).
Như đã trình bày ở trong phần 4.2.4, ta có 2 bảng phục vụ chức năng phân quyền
theo nhóm quyền đó là Permission và ScopePermission. Cụ thể, xét nội dung của
một bản ghi trong bảng Permisison:
{
" Id " : 1 ,
" Url " : " / api / r e p o r t s " ,
" Resource " : {
" name " : " R e p o r t " ,
" d i s p l a y N a m e " : "Bá o c á o "
},
" Method " : "POST " ,
" A c t i o n " : "Xuấ t b á o c á o "
" F i l t e r " : " body " ,
" FilterValue ": [
{
" f i e l d ": " reportType " ,
" d i s p l a y N a m e " : " Lo ạ i b á o c á o " ,
" value ": [
{
53
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
" valueName " : " R e p o r t D r i v e r " ,
" d e s c r i p t i o n " : "Bá o c á o l á i xe "
},
{
" valueName " : " R e p o r t C a r " ,
" d e s c r i p t i o n " : "Bá o c á o xe "
},
{
" valueName " : " ReportKmCar " ,
" d e s c r i p t i o n " : "Bá o c á o Km t h e o xe "
}
]
}
]
}
Quyền trên có các thông tin như sau:
• Id của quyền là 1
• Đường dẫn truy cập API là "/api/reports".
• Tài nguyên truy cập là "báo cáo".
• Phương thức của http request là "POST".
• Hành động là "xuất báo cáo".
• Đối tượng lọc là "body"của request.
• Trường lọc bao gồm một trường là reportType (loại báo cáo). Đối với trường
reportType, ta có thể truy vấn với các giá trị ReportDriver (báo cáo lái xe),
ReportCar (báo cáo xe), ReportKmCar (báo cáo số Km theo xe).
Xét đến nội dung của một bản ghi bảng ScopePermission có nội dung như sau:
{
" Id " : 1 ,
" Allowed " : t r u e ,
" F i l t e r ": ’[
{
" f i e l d ": " reportType " ,
" d i s p l a y N a m e " : " Lo ạ i b á o c á o " ,
" value ": [
{
" valueName " : " R e p o r t C a r " ,
" d e s c r i p t i o n " : "Bá o c á o xe "
},
{
54
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
" valueName " : " ReportKmCar " ,
" d e s c r i p t i o n " : "Bá o c á o Km t h e o xe "
}
]
}
]’
" PermissionId ": 1 ,
" ScopeId " : 2
}
Nhóm quyền trên là nhóm quyền vận hành (operator: có id là 2), có các cài đặt
quyền đối với quyền có id là 1 như sau:
• Được phép truy cập với quyền có id là 1.
• Được phép lọc với trường reportType (Loại báo cáo) và có thể lọc với các giá
trị là ReportCar (báo cáo xe), ReportKmCar (báo cáo số Km theo xe).
Tổng kết lại, đối với nghiệp vụ xuất báo cáo, ta có thể xuất 3 loại báo cáo chính
là báo cáo lái xe, báo cáo xe và báo cáo số Km theo xe. Nhóm quyền vận hành được
phép thực hiện nghiệp vụ xuất báo cáo và chỉ được xuất 2 loại báo cáo là báo cáo
xe và báo cáo số Km theo xe. Trong trường hợp mà quyền không định nghĩa đối
tượng lọc và các trường lọc thì sẽ chỉ xét được phép thực hiện hay không.
Sau khi đã thực hiện xem người dùng có quyền thực hiện truy vấn API trên
hay không, nếu người dùng không được phép truy cập, server sẽ trả về mã 401
UnAuthorize (không được phép truy cập). Nếu người dùng được phép truy cập,
Authorize Middleware sẽ trích xuất thông tin nhóm quyền từ header của request
người dùng. Từ nhóm quyền đó ta sẽ lấy được danh sách các đơn vị người dùng
quản lý. Thông tin danh sách này sẽ được thêm vào http request và phục vụ cho
việc phân quyền truy cập tài nguyên theo đơn vị quản lý.
5.1.3
Kết quả đạt được
Sau khi xây dựng theo thiết kế, server đã phân quyền người dùng thành công đối
với nhóm quyền được chỉ định và tài nguyên theo đơn vị quản lý.
5.2
Nâng cao hiệu năng giao diện người dùng
5.2.1
Đặt vấn đề
Như đã trình bày trong mục 3.1.1, ReactJs sẽ chỉ render lại những phần thay
đổi. Tuy nhiên, nếu component render lại, những component con trong nó cũng
sẽ render lại theo. Nếu lượng dữ liệu render lại ít, hiệu năng sẽ không ảnh hưởng
nhiều, nhưng nếu dữ liệu render lại nhiều thì sẽ ảnh hưởng lớn đến hiệu năng và
trải nghiệm người dùng. Đặc biệt, trong hệ thống giám sát xe, ta làm việc rất nhiều
55
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
với toạ độ, đường đi, lịch sử của xe đều là những dữ liệu khá lớn. Vì vậy vấn đề cần
giải quyết là làm giảm thiểu tối đa việc render lại giao diện trên những component
liên quan đến việc xử lý những dữ liệu trên.
5.2.2
Giải quyết vấn đề
a, Sử dụng React.memo
React.memo là một higher component (HOC). Higher-order component (HOC)
là một kỹ thuật nâng cao trong React được sử dụng trong việc sử dụng lại các component. HOCs không là một phần trong React API. Một cách cụ thể, một higherorder component là một hàm và nó nhận đối số là một component và trả về một
component mới. Một react componet được đặc trưng bởi state và props. Có thể hiểu
component giống như một function, còn state và props là các tham số đầu vào và
trả về các thành phần trên giao diện. React.memo giúp cho component tránh được
việc rerender lại bằng việc so sánh props của chúng với props lần trước đó, nếu
không có gì thay đổi, component sẽ không phải thực hiện việc render lại. Việc này
giúp tăng performance đáng kể đối với các component thực hiện việc vẽ đường đi
trên bản đồ, bởi vì dữ liệu đầu vào của các component vẽ đường đi là danh sách các
toạ độ trên bản đồ, một đường đi có thể chứa tới vài chục nghìn toạ độ như vậy.
b, Sử dụng thư viện react-window
Tôi đã tuỳ biến thư viện này để xây dựng component danh sách lịch sử của xe
theo thời gian.
Hình 5.3: Giao diện component danh sách lịch sử.
Lịch sử chạy xe bao gồm rất nhiều bản ghi, do việc ghi lại lịch sử cần diễn ra
liên tục. Thiết kế ghi lại lịch sử xe trong hệ thống là cứ mỗi năm giây sẽ ghi lại một
lần. Do đó, nếu thực hiện xem lịch sử chạy của xe trong một ngày có thể lên tới hơn
17 nghìn bản ghi, trong vài ngày sẽ là vài chục nghìn bản ghi. Khi thực hiện xem
56
CHƯƠNG 5. CÁC GIẢI PHÁP VÀ ĐÓNG GÓP NỔI BẬT
lịch sử theo thời gian, khi tới mốc thời gian nào, dòng lịch sử đó sẽ được bôi đậm
và di chuyển đến dòng đó. Do đó component danh sách lịch sử sẽ thực hiện việc
render lại liên tục khi chúng ta xem lịch sử theo thời gian. Vì vậy ở đây tôi đã tuỳ
biến thư viện react-window để tránh việc render lại quá nhiều này.
Hình 5.4: Cách thức hoạt động của react-window.
Hình 5.4 miêu tả cách thức hoạt động của react-window. React-window sẽ không
render toàn bộ dữ liệu trong danh sách mà chỉ liệt kê ra số lượng các phần tử đủ
để hiển thị trong khung màn hình. React-window cho chúng ta chỉ định chiều cao
của khung bao quanh các phần tử và chiều cao mỗi phần tử, từ đó có thể xác định
ra có bao nhiêu phần tử trong một khung màn hình. Ví dụ, trong khung màn hình
hiển thị được 8 phần tử, react-window sẽ tính toán số lượng phần tử dự bị phía trên
và phía dưới để khi người dùng scroll lên hoặc xuống thì sẽ lấy những phần tử đó
để hiển thị ra màn hình mà không phải hiển thị toàn bộ danh sách. Như vậy, danh
sách các phần tử được render lại sẽ chỉ bao gồm các phần tử hiển thị lên giao diện
và các phần tử dự bị phục vụ cho việc scroll, ít hơn rất nhiều so với việc render lại
toàn bộ danh sách.
5.2.3
Kết quả đạt được
Trước khi tuỳ biến thư viện react-window, khi thực hiện chức năng xem lịch sử
chạy theo thời gian của xe, màn hình giao diện xảy ra hiện tượng chạy rất chậm.
Sau khi tuỳ biến, chức năng trên đã chạy ổn định và không gặp phải hiện tượng
trên.
57
CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1
Kết luận
Sau quá trình thực hiện đồ án tốt nghiệp, tôi đã xây dựng được hệ thống giám
sát xe chuyên dùng trong ngân hàng với các chức năng chính và mục tiêu đã đặt ra,
đồng thời thực hiện phân quyền động người sử dụng hệ thống.
Để phát triển hệ thống giám sát xe chuyên dùng, tôi đã thực hiện tìm hiểu, phân
tích các hệ thống đang có trên thị trường, đồng thời từ nghiệp vụ của hệ thống mà
xây dựng các tính năng chính cho sản phẩm cuối cùng. Các chức năng của hệ thống
đã được hoàn thiện. Tuy nhiên, so sánh với các hệ thống đang có thì các chức năng
vẫn chưa được hoàn thiện thực sự tốt.
Từ các yêu cầu của hệ thống, tôi đã thực hiện được việc phân quyền động người
dùng. Người dùng trong hệ thống được phân quyền qua hai hướng chính: (i) phân
quyền theo hành động cửa người dùng theo nhóm quyền, (ii) phân quyền truy cập
tài nguyên của hệ thông thông quá đơn vị được phân công quản lý.
Thông quá quá trình làm đồ án, tôi đã học hỏi được rất nhiều kiến thức, kinh
nghiệm. Đó là kỹ năng phân tích, thiết kế, xây dựng hệ thống, lập kế hoạch thời
gian hoàn thành theo từng mốc cụ thể, kỹ năng tự tìm hiểu, viết báo cáo ... Đây là
những kỹ năng vô cùng cần thiết để làm việc sau này.
6.2
Hướng phát triển
Hệ thống giám sát xe chuyên dùng của ngân hàng đang được hoàn thiện, phát
triển và cải tiến trong tương lai.
Hệ thống tập trung phần lớn làm việc với các thành phần trên bản đồ. Do đó,
trước hết tôi sẽ tập trung hoàn thiện và cải tiến giao diện để nâng cao trải nghiệm
của người dùng. Sau đó, tôi sẽ thực hiện nâng cao khả truy suất của hệ thống để có
thể gửi phản hồi dữ liệu nhanh hơn tới người dùng, đồng thời thực hiện xử lý các
thao tác dữ liệu nặng ở phía cơ sở dữ liệu bằng các sử dụng procedure để giảm tải
việc tính toán cho server.
58
TÀI LIỆU THAM KHẢO
[1] Internet source, TTAS - Thiết bị định vị. url: http : / / www. ttas . vn/
(urlseen 29/07/2022).
[2] Internet source, BAGPS - Giám sát hành trình số 1 Việt Nam. url: https:
//bagps.vn/ (urlseen 29/07/2022).
[3] Internet source, React - A JavaScript library for building user interfaces. url:
https://reactjs.org/ (urlseen 29/07/2022).
[4] Internet source, React-geocode - A module to transform a description of a location into geographic coordinates. url: https://github.com/shukerullah/
react-geocode#readme (urlseen 29/07/2022).
[5] Internet source, @react-google-maps/api - react library that provides component working with google map. url: https://react-google-mapsapi-docs.netlify.app/ (urlseen 29/07/2022).
[6] Internet source, ASP.Net core. url: https://docs.microsoft.com/
en-us/aspnet/core/ (urlseen 29/07/2022).
[7] Internet source, Microsoft Sql Server. url: https://www.microsoft.
com/en-us/sql-server/ (urlseen 29/07/2022).
59
PHỤ LỤC
60
A. Thiết kế cơ sở dữ liệu
Bảng A.1: Thiết kế chi tiết bảng Rfid.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id định danh thẻ Rfid
CardNumber
varchar(100)
Có
Mã thẻ
Description
nvarchar(255)
Không
Mô tả thẻ
ActivationTime
datetime
Không
Ngày kích hoạt thẻ
Type
int
Có
Loại thẻ
Isdistributed
bit
Có
Trạng thái đã được gán
Status
bit
Có
Trạng thái hoạt động thẻ
UnitId
int
Có
Id của đơn vi
.
Bảng A.2: Thiết kế chi tiết bảng Car.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của xe
LiscensePlate
varchar(20)
Có
Biển số xe
Type
nvarchar(50)
Không
Loại xe
NumberCamera
int
Có
Số lượng camera
FirstCamPo
int
Có
Vị trí camera trước
FirstCamRotation
int
Có
Góc qay camera thứ nhất
SecondCamRotation int
Có
Góc quay camera thứ hai
Fuel
int
Có
Nhiên liệu sử dụng
LimitedSpeed
int
Có
Giới hạn tốc độ
UnitId
int
Có
Id của đơn vị
RfidId
int
Không
Id của thẻ Rfid
DriverId
int
Không
Id của lái xe
.
61
PHỤ LỤC A. THIếT Kế Cơ Sở Dữ LIệU
Bảng A.3: Thiết kế chi tiết bảng Device.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của thiết bị
DeviceNumber
varchar(20)
Có
Mã thiết bị
IMEI
varchar(20)
Có
Mã định danh IMEI
Phone
varchar(11)
Có
Số điện thoại
MobileCarrier
int
Có
Nhà mạng sử dụng
ActivationTime
datetime
Không
Ngày kích hoạt
AllowUpdate
bit
Có
Cho phép cập nhật
Status
bit
Có
Trạng thái hoạt động
UnitId
int
Có
Id của đơn vị
CarId
int
Không
Id của xe
.
Bảng A.4: Thiết kế chi tiết bảng Member.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của cán bộ
Avata
varchar(50)
Không
Ảnh đại diện
EmployeeCode
varchar(20)
Có
Mã cán bộ
Name
varchar(50)
Có
Tên cán bộ
Sex
int
Có
Giới tính
Type
int
Có
Chức vụ
Phone
varchar(11)
Không
Số điện thoại
Email
varchar(50)
Không
Địa chỉ email
Status
bit
Có
Trạng thái làm việc
UnitId
int
Có
Id của đơn vị
.
62
PHỤ LỤC A. THIếT Kế Cơ Sở Dữ LIệU
Bảng A.5: Thiết kế chi tiết bảng History.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của lịch sử
Cam1ImgPath
varchar(255)
Không
Địa chỉ xem camera thứ nhất
Cam2ImgPath
varchar(255)
Không
Địa chỉ xemc camera thứ hai
AppVersion
varchar(50)
Không
Phiên bản ứng dụng
RecieveTime
datetime
Có
Thời gian nhận bản tin lịch sử
DeviceTime
datetime
Có
Thời gian trên thiết bị
EngineOn
int
Có
Trạng thái hoạt động của xe
StrongBoxOpen
int
Có
Trạng thái két an toàn
IsSos
bit
Có
Trạng thái cảnh báo
GpsLat
float
Có
Vĩ độ theo Gps
GpsLng
float
Có
Kinh độ theo Gps
NetworkLat
float
Có
Vĩ độ theo network
NetworkLng
float
Có
Kinh độ theo network
CarId
int
Có
Id của xe
.
Bảng A.6: Thiết kế chi tiết bảng Online.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của trạng thái trực tuyến
Cam1ImgPath
varchar(255)
Không
Địa chỉ xem camera thứ nhất
Cam2ImgPath
varchar(255)
Không
Địa chỉ xemc camera thứ hai
AppVersion
varchar(50)
Không
Phiên bản ứng dụng
RecieveTime
datetime
Có
Thời gian nhận bản tin trạng
thái
DeviceTime
datetime
Có
Thời gian trên thiết bị
EngineOn
int
Có
Trạng thái hoạt động của xe
StrongBoxOpen
int
Có
Trạng thái két an toàn
IsSos
bit
Có
Trạng thái cảnh báo
GpsLat
float
Có
Vĩ độ theo Gps
GpsLng
float
Có
Kinh độ theo Gps
Xem tiếp ở trang sau
63
PHỤ LỤC A. THIếT Kế Cơ Sở Dữ LIệU
Bảng A.6 – Thiết kế chi tiết bảng Online – Tiếp theo
NetworkLat
float
Có
Vĩ độ theo network
NetworkLng
float
Có
Kinh độ theo network
CarId
int
Có
Id của xe
.
Bảng A.7: Thiết kế chi tiết bảng CarReport.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của báo cáo
TotalKm
float
Có
Tổng Km đi
TotalFuel
float
Có
Tổng nhiên liệu sử dụng
RunningTime
int
Có
Thời gian chạy
OpenStrongBox
int
Có
Số lần mở két sắt
Conflict
int
Có
Số lần đụng độ
RouteDeviation
int
Có
Số lần lệch tuyến
TimeDeviation
int
Có
Số lần lệch thời gian
ReportTime
date
Có
Ngày báoc cáo
CarId
int
Có
Id của xe
.
Bảng A.8: Thiết kế chi tiết bảng TransactionPoint.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của điểm giao dịch
PointCode
varchar(50)
Có
Mã điểm giao dịch
PointName
nvarchar(255)
Có
Tên điểm giao dịch
Type
int
Có
Loại điểm giao dịch
Address
varchar(MAX)
Có
Địa chỉ
Longtitude
float
Có
Kinh độ
Latitude
float
Có
Vĩ độ
Contact
nvarchar(50)
Không
Người liên hệ
Phone
varchar(11)
Không
Số điện thoại liên hệ
Fax
varchar(255)
Không
Địa chỉ fax liên hệ
Xem tiếp ở trang sau
64
PHỤ LỤC A. THIếT Kế Cơ Sở Dữ LIệU
Bảng A.8 – Thiết kế chi tiết bảng TransactionPoint – Tiếp theo
UnitId
int
Có
Id của đơn vị
.
Bảng A.9: Thiết kế chi tiết bảng SampleRoute.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của tuyến mẫu
RouteCode
varchar(50)
Có
Mã tuyến mẫu
Type
int
Có
Loại tuyến
Route
string
Có
Danh sách các điểm giao dịch
Direction
varchar(MAX)
Có
Đường đi
Wayback
varchar(MAX)
Có
Đường quay về
AutoTurnBack
bit
Có
Tự động quay về điểm bắt đầu
BeginTime
time
Có
Thời gian bắt đầu
OverTimeAllowed int
Có
Quá thời gian cho phép
Tolerance
int
Có
Quá quãng đường cho phép
Distance
float
Có
Quãng đường dự tính
ArrivalTime
int
Có
Thời gian dự tính
UnitId
int
Có
Id của đơn vị
.
Bảng A.10: Thiết kế chi tiết bảng Segmentation.
Tên trường
Kiểu dữ liệu
Bắt
buộc
Mô tả
Id
int
Có
Id của phân công
BeginTime
time
Có
Thời điểm bắt đầu
EndTime
time
Có
Thời điểm kết thúc
BeginDate
date
Có
Ngày bắt đầu
EndDate
date
Có
Ngày kết thúc
Day
string
Có
Các ngày trong tuần
Control
bit
Có
Cho phép điều khiển
Sms
bit
Có
Cho phép gửi thông báo
EditedRoute
varchar(MAX)
Không
Tuyến đường chỉnh sửa
Xem tiếp ở trang sau
65
PHỤ LỤC A. THIếT Kế Cơ Sở Dữ LIệU
Bảng A.10 – Thiết kế chi tiết bảng Segmentation – Tiếp theo
UnitId
int
Có
Id của đơn vị
CarId
int
Có
Id của xe
DriverId
int
Có
Id của lái xe
TreasurerId
int
Có
Id của chủ hàng
AtmTechnicanId
int
Có
Id của kỹ thuật viên ATM
RouteId
int
Có
Id của tuyến mẫu
.
66
Download