Commit 24cf5527 authored by YONG-LIN SU's avatar YONG-LIN SU

整理嘉義資料

修正部分匯入功能
新增初始話自動匯入功能
parent 3378f58f
1 A 中山路A
2 B 中山路B
3 B 新生路B
4 C 垂楊路C
5 D 國華街D
6 D 新榮路D
7 E 友愛路E
8 F 文化路F
9 G 仁愛路G
10 G 志昇街G
11 H 新民路H
12 I 忠孝路I
13 I 博東路I
14 J 民生北路J
15 J 民生南路J
16 K 公明路K
17 K 光華路K
18 L 南京路L
19 L 興業路L
20 M 立仁路M
21 M 彌陀路M
22 N 八德路N
23 P 維新路P
24 Q 中興路Q
25 R 上海路R
26 S 吳鳳北路S
27 T 大雅路T
28 U 重慶路U
29 V 民族路V
30 W 林森西路W
31 X 芳安路X
32 Y 德安路Y
33 Z 民權路Z
34 WA 興達路WA
35 WB 友忠路WB
36 ZF 民權路ZF
This source diff could not be displayed because it is too large. You can view the blob instead.
1 2 20
2 2 20
3 2 20
4 2 20
5 2 20
6 2 20
7 2 20
8 2 20
9 2 20
10 2 20
11 2 40
12 2 20
13 2 20
14 2 40
1 1 25
2 1 25
3 1 25
4 1 25
5 1 25
6 1 25
7 1 25
8 1 25
9 1 25
10 1 25
11 1 50
12 1 15
13 1 15
14 1 50
01 0.5
02 1.0
\ No newline at end of file
1 蘇昭融 Jiayi01 Jiayi01 1
2 周泫慧 Jiayi02 Jiayi02 1
3 陳美雲 Jiayi03 Jiayi03 1
6 李玉秀 Jiayi06 Jiayi06 1
7 陶青之 Jiayi07 Jiayi07 1
8 林月如 Jiayi08 Jiayi08 1
17 王春雅 Jiayi17 Jiayi17 1
25 林金月 Jiayi25 Jiayi25 1
28 侯秀玉 Jiayi28 Jiayi28 1
30 黃敏惠 Jiayi30 Jiayi30 1
37 曾錦享 Jiayi37 Jiayi37 1
41 徐碧瑩 Jiayi41 Jiayi41 1
51 杜秀娟 Jiayi51 Jiayi51 1
52 謝世明 Jiayi52 Jiayi52 1
58 張振軒 Jiayi58 Jiayi58 1
60 江青芳 Jiayi60 Jiayi60 1
61 曹素勤 Jiayi61 Jiayi61 1
63 黃凱羚 Jiayi63 Jiayi63 1
64 莊坤儒 Jiayi64 Jiayi64 1
65 張晉鴻 Jiayi65 Jiayi65 1
66 鄭詠薰 Jiayi66 Jiayi66 1
69 傅嘉良 Jiayi69 Jiayi69 1
71 林倖如 Jiayi71 Jiayi71 1
72 李麗鈴 Jiayi72 Jiayi72 1
73 陳芷昀 Jiayi73 Jiayi73 1
74 王英杰 Jiayi74 Jiayi74 1
75 王美月 Jiayi75 Jiayi75 1
76 王宏俊 Jiayi76 Jiayi76 1
77 張皓翔 Jiayi77 Jiayi77 1
80 朱偉誠 Jiayi80 Jiayi80 1
81 陳盈智 Jiayi81 Jiayi81 1
83 楊卉芹 Jiayi83 Jiayi83 1
84 劉宗欽 Jiayi84 Jiayi84 1
85 黃翌瑋 Jiayi85 Jiayi85 1
86 何政澤 Jiayi86 Jiayi86 1
87 陳誼晏 Jiayi87 Jiayi87 1
88 王惠芬 Jiayi88 Jiayi88 1
89 吳忠益 Jiayi89 Jiayi89 1
90 林哲安 Jiayi90 Jiayi90 1
93 李昀樺 Jiayi93 Jiayi93 1
99 工程師 Root Root 99
\ No newline at end of file
01 開單員
99 工程師
\ No newline at end of file
01 無限 (INFINITI)
02 裕隆
03 三陽 (Honda)
04 大發 (Daihatsu)
05 喜悅 (Seat)
06 中華
07 福特 (Ford)
08 雷諾 (Renault)
09 寶獅 (Peugeot)
10 賓士 (Benz)
11 寶馬 (BMW)
12 富豪 (Volvo)
13 別克 (Buick)
14 雪鐵龍 (Citroen)
15 飛雅特 (Fiat)
16 其他
17 豐田 (Toyota)
18 歐寶 (Opel)
19 奧斯摩比 (Oldsmobile)
20 龐帝克 (Pontiac)
21 奧斯汀(Austin)
22 雪佛蘭 (Chevrolet)
23 克萊斯勒 (Chrysler)
24 愛快羅密歐 (Alfa Romeo)
25 福斯 (Volkswagon)
26 紳寶 (Saab)
27 蘭吉雅 (Lancia)
28 謀克利 (Mercury)
29 三菱 (Mitsubishi)
30 速霸路 (Subaru)
31 奧迪 (Audi)
32 路寶 (Rover)
33 馬自達 (Mazda)
34 鈴木 (Suzuki)
35 現代 (Hyundai)
36 大慶
37 凱迪拉克 (Cadillac)
38 釷星 (Saturn)
39 日產 (Nissan)
40 五十鈴 (Isuzu)
41 本田 (Honda)
42 拉達 (Lada)
43 保時捷 (Porsche)
44 紳揚
45 大宇 (Dwewoo)
46 勞斯萊斯 (Rolls Royce)
47 起亞 (KIA)
48 吉優 (GEO)
49 捷豹 (Jaguar)
50 道奇 (Dodge)
51 台塑 (Formosa)
52 凌志 (Lexus)
53 蓮花 (Lotus)
54 吉普 (Jeep)
55 納智捷 (Luxgen)
56 MG
57 寶騰 (pontiac)
58 SKODA
\ No newline at end of file
01 咖啡
02 黑
03 白
04 紅
05 橙
06 黃
07 綠
08 藍
09 紫
10 金
11 棕
12 銀
13 灰
14 其他
\ No newline at end of file
01 自小客
02 自小貨
03 小客貨
04 小營客
05 小營貨
06 大自客貨
07 遊覽車
08 大營貨
10 計程車
11 交通車
12 身心障礙(府-2)
13 身心障礙(社-4)
14 其他
31 輕機
\ No newline at end of file
......@@ -687,12 +687,16 @@ public class Common {
}
public static void copyAssetFileToFiles(Context context, String filename) throws IOException {
copyAssetFileToFiles(context, filename, context.getFilesDir().getPath());
}
public static void copyAssetFileToFiles(Context context, String filename, String savePath) throws IOException{
InputStream is = context.getAssets().open(filename);
byte[] buffer = new byte[is.available()];
is.read(buffer);
is.close();
File of = new File(context.getFilesDir() + File.separator + filename);
File of = new File(savePath + File.separator + filename);
of.createNewFile();
FileOutputStream os = new FileOutputStream(of);
os.write(buffer);
......
......@@ -51,7 +51,7 @@ public class SelectRoadAdapter extends ListAdapter<Road, SelectRoadAdapter.Selec
this.dataBinding = dataBinding;
}
void setBinding(Road road, OnItemClickListener onItemClickListener){
String roadString = road.id + " " + road.name;
String roadString = road.code + " " + road.name;
dataBinding.btnSelectRoad.setText(roadString);
dataBinding.btnSelectRoad.setOnClickListener(view -> {
onItemClickListener.onSpaceClick(road);
......
......@@ -18,10 +18,12 @@ import android.icu.util.BuddhistCalendar;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.LayoutInflater;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.databinding.DataBindingUtil;
......@@ -32,10 +34,12 @@ import java.util.Map;
import ecom.android.newparkapp.R;
import ecom.android.newparkapp.databinding.ActivityMainBinding;
import ecom.android.newparkapp.databinding.AlertDialogProgressBarBinding;
import ecom.android.newparkapp.entity.Shift;
import ecom.android.newparkapp.entity.User;
import ecom.android.newparkapp.viewModel.FTPUploadViewModel;
import ecom.android.newparkapp.viewModel.NotificationViewModel;
import ecom.android.newparkapp.viewModel.T01ImportDbViewModel;
import ecom.android.newparkapp.viewModel.T01SettingViewModel;
public class MainActivity extends AppCompatActivity {
......@@ -43,6 +47,7 @@ public class MainActivity extends AppCompatActivity {
private ActivityMainBinding dataBinding;
private ViewModelProvider viewModelProvider;
private T01SettingViewModel t01SettingViewModel;
private T01ImportDbViewModel t01ImportDbViewModel;
private FTPUploadViewModel ftpUploadViewModel;
private NotificationViewModel notificationViewModel;
......@@ -54,12 +59,16 @@ public class MainActivity extends AppCompatActivity {
private ActivityResultLauncher settingActivityResultLauncher;
private AlertDialog alertDialogProgress;
private AlertDialogProgressBarBinding alertDialogProgressBarBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
viewModelProvider = new ViewModelProvider(this);
t01SettingViewModel = viewModelProvider.get(T01SettingViewModel.class);
t01ImportDbViewModel = viewModelProvider.get(T01ImportDbViewModel.class);
ftpUploadViewModel = viewModelProvider.get(FTPUploadViewModel.class);
ftpUploadViewModel.setT01SettingViewModel(t01SettingViewModel);
......@@ -83,6 +92,8 @@ public class MainActivity extends AppCompatActivity {
if (!isSuccess){
Toast.makeText(this, "新增檔案目錄失敗,請重啟程式", Toast.LENGTH_LONG).show();
}else {
// progress alert dialog init
initAlertDialogProgress();
// 註冊事件綁定
eventBinding();
// 複製assert下的模型
......@@ -91,6 +102,8 @@ public class MainActivity extends AppCompatActivity {
ftpUploadViewModel.startFTPUploadService();
// 監聽事件綁定
observeBinding();
// 複製assert下的基本資料,並匯入
t01ImportDbViewModel.DBDataPrepare();
}
}
});
......@@ -210,6 +223,17 @@ public class MainActivity extends AppCompatActivity {
ftpUploadViewModel.getMessage().observe(this, s -> {
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
});
t01ImportDbViewModel.getProcessing().observe(this, isProcessing ->{
if (alertDialogProgress != null){
if (isProcessing){
setAlertDialogProgressMessage("基本資料匯入中請稍後~~");
alertDialogProgress.show();
}else {
alertDialogProgress.dismiss();
}
}
});
}
private void btnStartOnClicked(Shift shift){
......@@ -234,5 +258,16 @@ public class MainActivity extends AppCompatActivity {
settingActivityResultLauncher.launch(intent);
}
private void initAlertDialogProgress(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false); // if you want user to wait for some process to finish,
alertDialogProgressBarBinding = AlertDialogProgressBarBinding.inflate(LayoutInflater.from(this));
builder.setView(alertDialogProgressBarBinding.getRoot());
alertDialogProgress = builder.create();
}
private void setAlertDialogProgressMessage(String message){
alertDialogProgressBarBinding.tvProgressBarMsg.setText(message);
}
}
\ No newline at end of file
......@@ -150,7 +150,7 @@ public class T02PlateAndSpaceConfirmActivity extends AppCompatActivity {
t02SelectSpaceViewModel.getCurrentRoad().observe(this, road -> {
String roadString = "";
if (road != null){
roadString = road.id + " "+ road.name;
roadString = road.code + " "+ road.name;
}
dataBinding.btnSelectRoad.setText(roadString);
......
......@@ -76,7 +76,7 @@ public class T02SelectSpaceActivity extends AppCompatActivity {
t02SelectSpaceViewModel.getCurrentRoad().observe(this, road -> {
String roadString = "";
if (road != null){
roadString = road.id + " "+ road.name;
roadString = road.code + " "+ road.name;
}
dataBinding.btnSelectRoad.setText(roadString);
......
package ecom.android.newparkapp.viewModel;
import static ecom.android.newparkapp.Common.copyAssetFileToFiles;
import static ecom.android.newparkapp.converter.SpaceTypeConverter.toSpaceType;
import android.Manifest;
......@@ -10,9 +11,11 @@ import android.os.Environment;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
......@@ -40,8 +43,10 @@ public class T01ImportDbViewModel extends AndroidViewModel {
private List<String> dbTableList = new ArrayList<>();
private MutableLiveData<String> toastMessage = new MutableLiveData<>();
private MutableLiveData<Boolean> processing = new MutableLiveData<>();
private String dataSavePath;
public T01ImportDbViewModel(@NonNull Application application) {
super(application);
......@@ -51,6 +56,7 @@ public class T01ImportDbViewModel extends AndroidViewModel {
dbTableList.add(dbTableName.name());
}
dataSavePath = Environment.getExternalStorageDirectory() + application.getString(R.string.sysData_path);
processing.setValue(false);
}
public List<String> getDbTableList(){
......@@ -59,6 +65,8 @@ public class T01ImportDbViewModel extends AndroidViewModel {
public MutableLiveData<String> getToastMessage(){return toastMessage; };
public LiveData<Boolean> getProcessing(){return processing;}
public void updateTable(String tableName){
DBTableName dbTableName= DBTableName.valueOf(tableName);
......@@ -235,13 +243,20 @@ public class T01ImportDbViewModel extends AndroidViewModel {
roadId = Integer.parseInt(columnString[1]);
spaceRateId = Integer.parseInt(columnString[2]);
spaceTypeId = Integer.parseInt(columnString[3]);
latitude = Float.parseFloat(columnString[4]);
longitude = Float.parseFloat(columnString[5]);
spaceStatusId = Integer.parseInt(columnString[6]);
}catch (NumberFormatException e){
break;
}
try {
latitude = Float.parseFloat(columnString[4]);
longitude = Float.parseFloat(columnString[5]);
}catch (NumberFormatException e){
// 無座標的
latitude = 0.0f;
longitude = 0.0f;
}
String newId = columnString[0];
List<Road> roadList = infoRepository.roadDao.loadAllByIds(new int[]{roadId});
......@@ -257,7 +272,14 @@ public class T01ImportDbViewModel extends AndroidViewModel {
SpaceStatus newSpaceStatus = SpaceStatusConverter.toSpaceStatus(spaceStatusId);
Space newSpace = new Space(newId, newRoad, newSpaceType, newSpaceRate, latitude, longitude, newSpaceStatus);
infoRepository.spaceDao.insertAll(newSpace);
try {
infoRepository.spaceDao.insertAll(newSpace);
}catch (Exception exception){
// 重複值過濾
// TODO: 2022/8/31 重複值處理
exception.printStackTrace();
}
}
});
break;
......@@ -298,6 +320,46 @@ public class T01ImportDbViewModel extends AndroidViewModel {
toastMessage.setValue(message);
}
/**
* 基本資料準備
*/
public void DBDataPrepare(){
boolean isDBDataExists = true;
for (DBTableName tableName : DBTableName.values()) {
String path = dataSavePath + tableName.name();
if (!new File(path).exists()) {
try {
copyAssetFileToFiles(getApplication(), tableName.name(), dataSavePath);
} catch (IOException e) {
e.printStackTrace();
continue;
}
isDBDataExists = false;
}
}
if (!isDBDataExists){
// import data
processing.setValue(true);
for (DBTableName tableName : DBTableName.values()) {
updateTable(tableName.name());
}
infoRepository.executorService.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
processing.postValue(false);
}
});
}
}
public enum DBTableName {
UserPermission,User, VehicleBrand, VehicleColor, VehicleType,SpaceRate,Road,Space,SpaceFee
}
......
......@@ -224,4 +224,5 @@ public class T01SettingViewModel extends AndroidViewModel {
public int getFTPUploadInterval(){
return PREF.getValue() != null ? PREF.getValue().pref_UploadT * 60 * 1000: 0;
}
}
A 中山路A
B 中山路B
C 垂楊路C
D 新榮路D
E 友愛路E
F 文化路F
G 仁愛路G
H 新民路H
I 忠孝路I
J 民生北路J
JJ 民生南路JJ
K 公明路K
LL 南京路LL
L 興業路L
M 彌陀路M
N 八德路N
P 維新路P
Q 中興路Q
R 上海路R
S 吳鳳北路S
T 大雅路T
U 重慶路U
V 民族路V
W 林森西路W
X 芳安路X
Y 德安路Y
Z 民權路Z
SP 站前停車場SP
MM 立仁路MM
KK 光華路KK
GG 志昇街GG
WA 興達路WA
DD 國華街DD
II 博東路II
CY 勤益大道CY
\ No newline at end of file
1 A 中山路A
2 B 中山路B
3 B 新生路B
4 C 垂楊路C
5 D 國華街D
6 D 新榮路D
7 E 友愛路E
8 F 文化路F
9 G 仁愛路G
10 G 志昇街G
11 H 新民路H
12 I 忠孝路I
13 I 博東路I
14 J 民生北路J
15 J 民生南路J
16 K 公明路K
17 K 光華路K
18 L 南京路L
19 L 興業路L
20 M 立仁路M
21 M 彌陀路M
22 N 八德路N
23 P 維新路P
24 Q 中興路Q
25 R 上海路R
26 S 吳鳳北路S
27 T 大雅路T
28 U 重慶路U
29 V 民族路V
30 W 林森西路W
31 X 芳安路X
32 Y 德安路Y
33 Z 民權路Z
34 WA 興達路WA
35 WB 友忠路WB
36 ZF 民權路ZF
This source diff could not be displayed because it is too large. You can view the blob instead.
01 啟用
99 禁用
\ No newline at end of file
01 機車
02 汽車
03 身障車格
04 婦幼車格
\ No newline at end of file
01 Allen allen allen 01
02 Bruce bruce bruce 02
777 Root root toor 99
\ No newline at end of file
1 蘇昭融 Jiayi01 Jiayi01 1
2 周泫慧 Jiayi02 Jiayi02 1
3 陳美雲 Jiayi03 Jiayi03 1
6 李玉秀 Jiayi06 Jiayi06 1
7 陶青之 Jiayi07 Jiayi07 1
8 林月如 Jiayi08 Jiayi08 1
17 王春雅 Jiayi17 Jiayi17 1
25 林金月 Jiayi25 Jiayi25 1
28 侯秀玉 Jiayi28 Jiayi28 1
30 黃敏惠 Jiayi30 Jiayi30 1
37 曾錦享 Jiayi37 Jiayi37 1
41 徐碧瑩 Jiayi41 Jiayi41 1
51 杜秀娟 Jiayi51 Jiayi51 1
52 謝世明 Jiayi52 Jiayi52 1
58 張振軒 Jiayi58 Jiayi58 1
60 江青芳 Jiayi60 Jiayi60 1
61 曹素勤 Jiayi61 Jiayi61 1
63 黃凱羚 Jiayi63 Jiayi63 1
64 莊坤儒 Jiayi64 Jiayi64 1
65 張晉鴻 Jiayi65 Jiayi65 1
66 鄭詠薰 Jiayi66 Jiayi66 1
69 傅嘉良 Jiayi69 Jiayi69 1
71 林倖如 Jiayi71 Jiayi71 1
72 李麗鈴 Jiayi72 Jiayi72 1
73 陳芷昀 Jiayi73 Jiayi73 1
74 王英杰 Jiayi74 Jiayi74 1
75 王美月 Jiayi75 Jiayi75 1
76 王宏俊 Jiayi76 Jiayi76 1
77 張皓翔 Jiayi77 Jiayi77 1
80 朱偉誠 Jiayi80 Jiayi80 1
81 陳盈智 Jiayi81 Jiayi81 1
83 楊卉芹 Jiayi83 Jiayi83 1
84 劉宗欽 Jiayi84 Jiayi84 1
85 黃翌瑋 Jiayi85 Jiayi85 1
86 何政澤 Jiayi86 Jiayi86 1
87 陳誼晏 Jiayi87 Jiayi87 1
88 王惠芬 Jiayi88 Jiayi88 1
89 吳忠益 Jiayi89 Jiayi89 1
90 林哲安 Jiayi90 Jiayi90 1
93 李昀樺 Jiayi93 Jiayi93 1
99 工程師 Root Root 99
\ No newline at end of file
01 早班
02 晚班
01 開單員
99 工程師
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment