Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
NewParkAPP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
YONG-LIN SU
NewParkAPP
Commits
9d543f85
Commit
9d543f85
authored
Aug 18, 2022
by
YONG-LIN SU
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 新增技術文件
2. 調整費率計算公式
parent
b2f7cb8f
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
308 additions
and
77 deletions
+308
-77
deploymentTargetDropDown.xml
.idea/deploymentTargetDropDown.xml
+0
-17
SpaceFeeDao.java
...rc/main/java/ecom/android/newparkapp/dao/SpaceFeeDao.java
+35
-0
InfoDatabase.java
...n/java/ecom/android/newparkapp/database/InfoDatabase.java
+4
-1
Case.java
app/src/main/java/ecom/android/newparkapp/entity/Case.java
+6
-2
Space.java
app/src/main/java/ecom/android/newparkapp/entity/Space.java
+1
-7
SpaceFee.java
...rc/main/java/ecom/android/newparkapp/entity/SpaceFee.java
+28
-0
CarPrinter_LKP34L.java
...va/ecom/android/newparkapp/printer/CarPrinter_LKP34L.java
+132
-23
InfoRepository.java
...va/ecom/android/newparkapp/repository/InfoRepository.java
+3
-0
T02StartActivity.java
...n/java/ecom/android/newparkapp/view/T02StartActivity.java
+1
-1
BlueToothPortViewModel.java
.../android/newparkapp/viewModel/BlueToothPortViewModel.java
+6
-2
T01ImportDbViewModel.java
...om/android/newparkapp/viewModel/T01ImportDbViewModel.java
+38
-8
T02StartViewModel.java
.../ecom/android/newparkapp/viewModel/T02StartViewModel.java
+17
-5
Space
相關文件/基本資料/Space
+7
-7
SpaceFee
相關文件/基本資料/SpaceFee
+28
-0
VehicleType
相關文件/基本資料/VehicleType
+2
-4
新嘉義開單APP-內部技術文件.docx
相關文件/新嘉義開單APP-內部技術文件.docx
+0
-0
No files found.
.idea/deploymentTargetDropDown.xml
deleted
100644 → 0
View file @
b2f7cb8f
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"deploymentTargetDropDown"
>
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type
value=
"RUNNING_DEVICE_TARGET"
/>
<deviceKey>
<Key>
<type
value=
"SERIAL_NUMBER"
/>
<value
value=
"577125220043"
/>
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown
value=
"2022-08-18T02:22:35.164972600Z"
/>
</component>
</project>
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/dao/SpaceFeeDao.java
0 → 100644
View file @
9d543f85
package
ecom
.
android
.
newparkapp
.
dao
;
import
androidx.lifecycle.LiveData
;
import
androidx.room.Dao
;
import
androidx.room.Delete
;
import
androidx.room.Insert
;
import
androidx.room.Query
;
import
java.util.List
;
import
ecom.android.newparkapp.entity.SpaceFee
;
@Dao
public
interface
SpaceFeeDao
{
@Query
(
"SELECT * FROM spacefee"
)
List
<
SpaceFee
>
getAll
();
@Query
(
"SELECT * FROM spacefee"
)
LiveData
<
List
<
SpaceFee
>>
getAllLiveData
();
@Query
(
"SELECT * FROM spacefee WHERE id IN (:Ids)"
)
List
<
SpaceFee
>
loadAllByIds
(
int
[]
Ids
);
@Query
(
"SELECT * FROM spacefee WHERE space_rate_id=:spaceRateId AND vehicle_type_id=:vehicleTypeId LIMIT 1"
)
SpaceFee
findByName
(
int
spaceRateId
,
int
vehicleTypeId
);
@Insert
void
insertAll
(
SpaceFee
...
spaceFees
);
@Delete
void
delete
(
SpaceFee
spacefee
);
@Query
(
"DELETE FROM spacefee"
)
void
deleteAll
();
}
app/src/main/java/ecom/android/newparkapp/database/InfoDatabase.java
View file @
9d543f85
...
@@ -16,6 +16,7 @@ import ecom.android.newparkapp.dao.CaseDao;
...
@@ -16,6 +16,7 @@ import ecom.android.newparkapp.dao.CaseDao;
import
ecom.android.newparkapp.dao.CasePhotoDao
;
import
ecom.android.newparkapp.dao.CasePhotoDao
;
import
ecom.android.newparkapp.dao.RoadDao
;
import
ecom.android.newparkapp.dao.RoadDao
;
import
ecom.android.newparkapp.dao.SpaceDao
;
import
ecom.android.newparkapp.dao.SpaceDao
;
import
ecom.android.newparkapp.dao.SpaceFeeDao
;
import
ecom.android.newparkapp.dao.SpaceRateDao
;
import
ecom.android.newparkapp.dao.SpaceRateDao
;
import
ecom.android.newparkapp.dao.UserDao
;
import
ecom.android.newparkapp.dao.UserDao
;
import
ecom.android.newparkapp.dao.UserPermissionDao
;
import
ecom.android.newparkapp.dao.UserPermissionDao
;
...
@@ -27,6 +28,7 @@ import ecom.android.newparkapp.entity.CasePhoto;
...
@@ -27,6 +28,7 @@ import ecom.android.newparkapp.entity.CasePhoto;
import
ecom.android.newparkapp.converter.LocationConverter
;
import
ecom.android.newparkapp.converter.LocationConverter
;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.SpaceFee
;
import
ecom.android.newparkapp.entity.SpaceRate
;
import
ecom.android.newparkapp.entity.SpaceRate
;
import
ecom.android.newparkapp.converter.TimestampConverter
;
import
ecom.android.newparkapp.converter.TimestampConverter
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.entity.User
;
...
@@ -36,7 +38,7 @@ import ecom.android.newparkapp.entity.VehicleColor;
...
@@ -36,7 +38,7 @@ import ecom.android.newparkapp.entity.VehicleColor;
import
ecom.android.newparkapp.entity.VehicleType
;
import
ecom.android.newparkapp.entity.VehicleType
;
// DataBase 一個資料庫一個,並涵蓋多個資料表
// DataBase 一個資料庫一個,並涵蓋多個資料表
@Database
(
entities
=
{
Case
.
class
,
CasePhoto
.
class
,
Road
.
class
,
Space
.
class
,
SpaceRate
.
class
,
User
.
class
,
UserPermission
.
class
,
VehicleBrand
.
class
,
VehicleColor
.
class
,
VehicleType
.
class
},
@Database
(
entities
=
{
Case
.
class
,
CasePhoto
.
class
,
Road
.
class
,
Space
.
class
,
SpaceRate
.
class
,
SpaceFee
.
class
,
User
.
class
,
UserPermission
.
class
,
VehicleBrand
.
class
,
VehicleColor
.
class
,
VehicleType
.
class
},
version
=
1
)
version
=
1
)
@TypeConverters
({
LocationConverter
.
class
,
TimestampConverter
.
class
,
SpaceTypeConverter
.
class
,
SpaceStatusConverter
.
class
,
CaseStatusConverter
.
class
,
ShiftConverter
.
class
})
@TypeConverters
({
LocationConverter
.
class
,
TimestampConverter
.
class
,
SpaceTypeConverter
.
class
,
SpaceStatusConverter
.
class
,
CaseStatusConverter
.
class
,
ShiftConverter
.
class
})
public
abstract
class
InfoDatabase
extends
RoomDatabase
{
public
abstract
class
InfoDatabase
extends
RoomDatabase
{
...
@@ -45,6 +47,7 @@ public abstract class InfoDatabase extends RoomDatabase {
...
@@ -45,6 +47,7 @@ public abstract class InfoDatabase extends RoomDatabase {
public
abstract
RoadDao
roadDao
();
public
abstract
RoadDao
roadDao
();
public
abstract
SpaceDao
spaceDao
();
public
abstract
SpaceDao
spaceDao
();
public
abstract
SpaceRateDao
spaceRateDao
();
public
abstract
SpaceRateDao
spaceRateDao
();
public
abstract
SpaceFeeDao
spaceFeeDao
();
public
abstract
UserDao
userDao
();
public
abstract
UserDao
userDao
();
public
abstract
VehicleBrandDao
vehicleBrandDao
();
public
abstract
VehicleBrandDao
vehicleBrandDao
();
public
abstract
VehicleColorDao
vehicleColorDao
();
public
abstract
VehicleColorDao
vehicleColorDao
();
...
...
app/src/main/java/ecom/android/newparkapp/entity/Case.java
View file @
9d543f85
...
@@ -41,6 +41,9 @@ public class Case {
...
@@ -41,6 +41,9 @@ public class Case {
@Embedded
(
prefix
=
"space_"
)
@Embedded
(
prefix
=
"space_"
)
public
Space
space
;
public
Space
space
;
@ColumnInfo
(
name
=
"final_space_fee"
)
public
int
space_fee
;
// 基於 車種 及 車格費率 轉換後的停車費
@ColumnInfo
(
name
=
"plate_number"
)
@ColumnInfo
(
name
=
"plate_number"
)
public
String
plateNumber
;
public
String
plateNumber
;
...
@@ -95,13 +98,14 @@ public class Case {
...
@@ -95,13 +98,14 @@ public class Case {
@Ignore
@Ignore
public
String
uploadPath
;
public
String
uploadPath
;
public
Case
(
String
billingNumber2
,
String
billingNumber1
,
User
user
,
Date
terminateDate
,
Date
caseTime
,
Space
space
,
String
plateNumber
,
VehicleType
vehicleType
,
VehicleColor
vehicleColor
,
VehicleBrand
vehicleBrand
,
float
periodHour
,
int
finalExpenses
,
Location
location
,
int
photoCount
,
Date
updateDate
,
Date
finalTime
,
Boolean
autoPay
,
String
agency
,
Shift
shift
,
CaseStatus
caseStatus
)
{
public
Case
(
String
billingNumber2
,
String
billingNumber1
,
User
user
,
Date
terminateDate
,
Date
caseTime
,
Space
space
,
int
space_fee
,
String
plateNumber
,
VehicleType
vehicleType
,
VehicleColor
vehicleColor
,
VehicleBrand
vehicleBrand
,
float
periodHour
,
int
finalExpenses
,
Location
location
,
int
photoCount
,
Date
updateDate
,
Date
finalTime
,
Boolean
autoPay
,
String
agency
,
Shift
shift
,
CaseStatus
caseStatus
)
{
this
.
billingNumber2
=
billingNumber2
;
this
.
billingNumber2
=
billingNumber2
;
this
.
billingNumber1
=
billingNumber1
;
this
.
billingNumber1
=
billingNumber1
;
this
.
user
=
user
;
this
.
user
=
user
;
this
.
terminateDate
=
terminateDate
;
this
.
terminateDate
=
terminateDate
;
this
.
caseTime
=
caseTime
;
this
.
caseTime
=
caseTime
;
this
.
space
=
space
;
this
.
space
=
space
;
this
.
space_fee
=
space_fee
;
this
.
plateNumber
=
plateNumber
;
this
.
plateNumber
=
plateNumber
;
this
.
vehicleType
=
vehicleType
;
this
.
vehicleType
=
vehicleType
;
this
.
vehicleColor
=
vehicleColor
;
this
.
vehicleColor
=
vehicleColor
;
...
@@ -274,7 +278,7 @@ public class Case {
...
@@ -274,7 +278,7 @@ public class Case {
* @return 分級停車金額
* @return 分級停車金額
*/
*/
public
int
getPricing
()
{
public
int
getPricing
()
{
return
this
.
space
.
fee
;
return
this
.
space
_
fee
;
}
}
...
...
app/src/main/java/ecom/android/newparkapp/entity/Space.java
View file @
9d543f85
...
@@ -23,9 +23,6 @@ public class Space implements Parcelable {
...
@@ -23,9 +23,6 @@ public class Space implements Parcelable {
@ColumnInfo
(
name
=
"space_type"
)
@ColumnInfo
(
name
=
"space_type"
)
public
SpaceType
spaceType
;
public
SpaceType
spaceType
;
@ColumnInfo
(
name
=
"fee"
)
public
int
fee
;
@Embedded
(
prefix
=
"space_rate_"
)
@Embedded
(
prefix
=
"space_rate_"
)
public
SpaceRate
spaceRate
;
public
SpaceRate
spaceRate
;
...
@@ -38,11 +35,10 @@ public class Space implements Parcelable {
...
@@ -38,11 +35,10 @@ public class Space implements Parcelable {
@ColumnInfo
(
name
=
"space_status"
)
@ColumnInfo
(
name
=
"space_status"
)
public
SpaceStatus
spaceStatus
;
public
SpaceStatus
spaceStatus
;
public
Space
(
String
id
,
Road
road
,
SpaceType
spaceType
,
int
fee
,
SpaceRate
spaceRate
,
float
latitude
,
float
longitude
,
SpaceStatus
spaceStatus
)
{
public
Space
(
String
id
,
Road
road
,
SpaceType
spaceType
,
SpaceRate
spaceRate
,
float
latitude
,
float
longitude
,
SpaceStatus
spaceStatus
)
{
this
.
id
=
id
;
this
.
id
=
id
;
this
.
road
=
road
;
this
.
road
=
road
;
this
.
spaceType
=
spaceType
;
this
.
spaceType
=
spaceType
;
this
.
fee
=
fee
;
this
.
spaceRate
=
spaceRate
;
this
.
spaceRate
=
spaceRate
;
this
.
latitude
=
latitude
;
this
.
latitude
=
latitude
;
this
.
longitude
=
longitude
;
this
.
longitude
=
longitude
;
...
@@ -53,7 +49,6 @@ public class Space implements Parcelable {
...
@@ -53,7 +49,6 @@ public class Space implements Parcelable {
id
=
in
.
readString
();
id
=
in
.
readString
();
road
=
in
.
readParcelable
(
Road
.
class
.
getClassLoader
());
road
=
in
.
readParcelable
(
Road
.
class
.
getClassLoader
());
spaceType
=
in
.
readParcelable
(
SpaceType
.
class
.
getClassLoader
());
spaceType
=
in
.
readParcelable
(
SpaceType
.
class
.
getClassLoader
());
fee
=
in
.
readInt
();
spaceRate
=
in
.
readParcelable
(
SpaceRate
.
class
.
getClassLoader
());
spaceRate
=
in
.
readParcelable
(
SpaceRate
.
class
.
getClassLoader
());
latitude
=
in
.
readFloat
();
latitude
=
in
.
readFloat
();
longitude
=
in
.
readFloat
();
longitude
=
in
.
readFloat
();
...
@@ -65,7 +60,6 @@ public class Space implements Parcelable {
...
@@ -65,7 +60,6 @@ public class Space implements Parcelable {
dest
.
writeString
(
id
);
dest
.
writeString
(
id
);
dest
.
writeParcelable
(
road
,
flags
);
dest
.
writeParcelable
(
road
,
flags
);
dest
.
writeParcelable
(
spaceType
,
flags
);
dest
.
writeParcelable
(
spaceType
,
flags
);
dest
.
writeInt
(
fee
);
dest
.
writeParcelable
(
spaceRate
,
flags
);
dest
.
writeParcelable
(
spaceRate
,
flags
);
dest
.
writeFloat
(
latitude
);
dest
.
writeFloat
(
latitude
);
dest
.
writeFloat
(
longitude
);
dest
.
writeFloat
(
longitude
);
...
...
app/src/main/java/ecom/android/newparkapp/entity/SpaceFee.java
0 → 100644
View file @
9d543f85
package
ecom
.
android
.
newparkapp
.
entity
;
import
androidx.room.ColumnInfo
;
import
androidx.room.Embedded
;
import
androidx.room.Entity
;
import
androidx.room.PrimaryKey
;
@Entity
public
class
SpaceFee
{
@PrimaryKey
(
autoGenerate
=
true
)
public
int
id
;
@Embedded
(
prefix
=
"vehicle_type_"
)
public
VehicleType
vehicleType
;
@Embedded
(
prefix
=
"space_rate_"
)
public
SpaceRate
spaceRate
;
@ColumnInfo
(
name
=
"fee"
)
public
int
fee
;
public
SpaceFee
(
int
id
,
VehicleType
vehicleType
,
SpaceRate
spaceRate
,
int
fee
)
{
this
.
id
=
id
;
this
.
vehicleType
=
vehicleType
;
this
.
spaceRate
=
spaceRate
;
this
.
fee
=
fee
;
}
}
app/src/main/java/ecom/android/newparkapp/printer/CarPrinter_LKP34L.java
View file @
9d543f85
...
@@ -16,8 +16,11 @@ import com.sewoo.port.android.BluetoothPort;
...
@@ -16,8 +16,11 @@ import com.sewoo.port.android.BluetoothPort;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.io.OutputStream
;
import
java.util.Calendar
;
import
ecom.android.newparkapp.Common
;
import
ecom.android.newparkapp.entity.Case
;
import
ecom.android.newparkapp.entity.Case
;
import
ecom.android.newparkapp.entity.SpaceType
;
public
class
CarPrinter_LKP34L
{
public
class
CarPrinter_LKP34L
{
private
ExtendCPCLPrinter
cpclPrinter
;
private
ExtendCPCLPrinter
cpclPrinter
;
...
@@ -42,58 +45,164 @@ public class CarPrinter_LKP34L{
...
@@ -42,58 +45,164 @@ public class CarPrinter_LKP34L{
// LK-P34L dpi 為 203,最大高度為 1155 px,最大寬度為 448px
// LK-P34L dpi 為 203,最大高度為 1155 px,最大寬度為 448px
int
nLineWidth
=
448
;
int
nLineWidth
=
448
;
cpclPrinter
.
setForm
(
102
,
203
,
203
,
1155
,
nLineWidth
,
1
);
cpclPrinter
.
setForm
(
102
,
203
,
203
,
1155
,
nLineWidth
,
1
);
int
paper_type
=
0
;
// 0 -> Gas Paper, 1 -> Black Mark Paper, 2 -> Continuous Paper
int
paper_type
=
1
;
// 0 -> Gas Paper, 1 -> Black Mark Paper, 2 -> Continuous Paper
cpclPrinter
.
setMedia
(
paper_type
);
cpclPrinter
.
setMedia
(
paper_type
);
// 列印 billNumber1 Code 39
if
(
carCase
.
autoPay
){
String
billNumber1
=
carCase
.
billingNumber1
;
// 自動扣繳
cpclPrinter
.
setCPCLBarcode
(
7
,
0
,
0
);
String
autoPayTitle
=
"※本車已約定金融、電信帳戶代繳,\n請勿重複繳費、並維持正常扣繳;\n如扣繳失敗請依背面說明補單繳款。"
;
cpclPrinter
.
printCPCLBarcode
(
CPCLConst
.
LK_CPCL_0_ROTATION
,
CPCLConst
.
LK_CPCL_BCS_39
,
1
,
CPCLConst
.
LK_CPCL_BCS_1RATIO
,
60
,
0
,
0
,
billNumber1
,
0
);
cpclPrinter
.
printAndroidFont
(
0
,
10
,
Typeface
.
SANS_SERIF
,
autoPayTitle
,
nLineWidth
,
20
);
}
else
{
// 列印 billNumber1 Code 39
String
billNumber1
=
carCase
.
billingNumber1
;
cpclPrinter
.
setCPCLBarcode
(
7
,
0
,
0
);
cpclPrinter
.
printCPCLBarcode
(
CPCLConst
.
LK_CPCL_0_ROTATION
,
CPCLConst
.
LK_CPCL_BCS_39
,
1
,
CPCLConst
.
LK_CPCL_BCS_1RATIO
,
60
,
0
,
0
,
billNumber1
,
0
);
}
// 列印 車號
// 列印 車號
String
plateNumber
=
"8052-LZ"
;
String
plateNumber
=
carCase
.
plateNumber
;
cpclPrinter
.
printAndroidFont
(
110
,
100
,
Typeface
.
SANS_SERIF
,
plateNumber
,
nLineWidth
,
35
);
cpclPrinter
.
printAndroidFont
(
110
,
100
,
Typeface
.
SANS_SERIF
,
plateNumber
,
nLineWidth
,
35
);
// 列印 車格編號
// 列印 車格編號
String
spaceWithRoad
=
"A213 中山路A"
;
String
spaceWithRoad
=
carCase
.
space
.
id
+
" "
+
carCase
.
space
.
road
.
name
;
cpclPrinter
.
printAndroidFont
(
110
,
150
,
Typeface
.
SANS_SERIF
,
spaceWithRoad
,
nLineWidth
,
35
);
cpclPrinter
.
printAndroidFont
(
110
,
150
,
Typeface
.
SANS_SERIF
,
spaceWithRoad
,
nLineWidth
,
35
);
// 列印 停車日期
// 列印 停車日期
String
parkingDate
=
"111年08月03日"
;
Calendar
parkingDateCalendar
=
Calendar
.
getInstance
();
parkingDateCalendar
.
setTime
(
carCase
.
caseTime
);
String
rocParkingDate
=
Common
.
getDate
(
parkingDateCalendar
,
true
);
String
parkingDate
=
rocParkingDate
.
substring
(
0
,
3
)
+
"年"
+
rocParkingDate
.
substring
(
3
,
5
)
+
"月"
+
rocParkingDate
.
substring
(
5
,
7
)
+
"日"
;
cpclPrinter
.
printAndroidFont
(
110
,
200
,
Typeface
.
SANS_SERIF
,
parkingDate
,
nLineWidth
,
35
);
cpclPrinter
.
printAndroidFont
(
110
,
200
,
Typeface
.
SANS_SERIF
,
parkingDate
,
nLineWidth
,
35
);
// 列印 billNumber2 Code 39
// 列印 billNumber2 Code 39
String
billNumber2
=
"77B18300298"
;
String
billNumber2
=
carCase
.
billingNumber2
;
cpclPrinter
.
setCPCLBarcode
(
7
,
0
,
0
);
cpclPrinter
.
setCPCLBarcode
(
7
,
0
,
0
);
cpclPrinter
.
printCPCLBarcode
(
CPCLConst
.
LK_CPCL_0_ROTATION
,
CPCLConst
.
LK_CPCL_BCS_39
,
1
,
CPCLConst
.
LK_CPCL_BCS_1RATIO
,
70
,
0
,
260
,
billNumber2
,
0
);
cpclPrinter
.
printCPCLBarcode
(
CPCLConst
.
LK_CPCL_0_ROTATION
,
CPCLConst
.
LK_CPCL_BCS_39
,
1
,
CPCLConst
.
LK_CPCL_BCS_1RATIO
,
70
,
0
,
260
,
billNumber2
,
0
);
// 列印 繳費期限
// 列印 繳費期限
String
terminateYear
=
"111"
;
Calendar
terminateDateCalendar
=
Calendar
.
getInstance
();
String
terminateMonth
=
"08"
;
terminateDateCalendar
.
setTime
(
carCase
.
terminateDate
);
String
terminateDay
=
"29"
;
String
rocTerminateDate
=
Common
.
getDate
(
terminateDateCalendar
,
true
);
String
terminateYear
=
rocTerminateDate
.
substring
(
0
,
3
);
String
terminateMonth
=
rocTerminateDate
.
substring
(
3
,
5
);
String
terminateDay
=
rocTerminateDate
.
substring
(
5
,
7
);
cpclPrinter
.
printAndroidFont
(
103
,
380
,
Typeface
.
SANS_SERIF
,
terminateYear
,
nLineWidth
,
25
);
cpclPrinter
.
printAndroidFont
(
103
,
380
,
Typeface
.
SANS_SERIF
,
terminateYear
,
nLineWidth
,
25
);
cpclPrinter
.
printAndroidFont
(
203
,
380
,
Typeface
.
SANS_SERIF
,
terminateMonth
,
nLineWidth
,
25
);
cpclPrinter
.
printAndroidFont
(
203
,
380
,
Typeface
.
SANS_SERIF
,
terminateMonth
,
nLineWidth
,
25
);
cpclPrinter
.
printAndroidFont
(
303
,
380
,
Typeface
.
SANS_SERIF
,
terminateDay
,
nLineWidth
,
25
);
cpclPrinter
.
printAndroidFont
(
303
,
380
,
Typeface
.
SANS_SERIF
,
terminateDay
,
nLineWidth
,
25
);
// 列印 停車時間
// 列印 停車時間
String
parkingTime
=
"14:58"
;
Calendar
nowCalendar
=
(
Calendar
)
parkingDateCalendar
.
clone
();
String
parkingFee
=
"25"
;
int
nHour
=
parkingDateCalendar
.
get
(
Calendar
.
HOUR_OF_DAY
);
String
userName
=
"系統測試"
;
boolean
b60Min
=
false
;
String
parkingTime
,
parkingFee
,
userName
;
int
printYMovement
=
50
;
int
printYMovement
=
50
;
int
printY
=
480
;
int
printY
=
480
;
// 開單累積最多 4 次
for
(
int
i
=
0
;
i
<
4
;
i
++){
for
(
int
i
=
0
;
i
<
4
;
i
++){
// TODO: 2022/8/18 超過上班時間,則停止列印
if
(
i
==
0
){
if
(
i
==
0
){
// 繳費金額
// 停車時間
cpclPrinter
.
printAndroidFont
(
130
,
printY
,
Typeface
.
SANS_SERIF
,
parkingFee
,
nLineWidth
,
30
);
parkingTime
=
nHour
+
":"
+
nowCalendar
.
get
(
Calendar
.
MINUTE
);
// 簽章
cpclPrinter
.
printAndroidFont
(
240
,
printY
,
Typeface
.
SANS_SERIF
,
userName
,
nLineWidth
,
30
);
// 停車費
parkingFee
=
String
.
valueOf
(
carCase
.
getPricing
());
// 使用者名稱
userName
=
carCase
.
user
.
name
;
}
else
{
}
else
{
printY
+=
printYMovement
;
printY
+=
printYMovement
;
// 停車時間
parkingTime
=
(
nHour
+
(
b60Min
?
1
:
0
)
)+
":"
+
(
b60Min
?
0
:
(
nowCalendar
.
get
(
Calendar
.
MINUTE
)
+
1
)
);
// 停車費
parkingFee
=
""
;
// 使用者名稱
userName
=
"________"
;
}
}
// 停車時間
cpclPrinter
.
printAndroidFont
(
15
,
printY
,
Typeface
.
SANS_SERIF
,
parkingTime
,
nLineWidth
,
30
);
// 簽章
// 身障車格判斷
cpclPrinter
.
printAndroidFont
(
240
,
printY
,
Typeface
.
SANS_SERIF
,
"________"
,
nLineWidth
,
30
);
if
(
carCase
.
space
.
spaceType
==
SpaceType
.
HANDICAPPED_SPACE
){
if
(
carCase
.
vehicleType
.
id
==
12
)
// 身心障礙(府-2)
{
// TODO: 2022/8/18 身心障礙 (府-2) 優惠處理
if
(
i
==
0
){
// 停車時間
parkingTime
=
nHour
+
":"
+
nowCalendar
.
get
(
Calendar
.
MINUTE
);
// 停車費
parkingFee
=
String
.
valueOf
(
carCase
.
getPricing
());
// 使用者名稱
userName
=
carCase
.
user
.
name
;
}
else
if
(
i
==
1
){
// 停車時間
parkingTime
=
(
nHour
+
(
b60Min
?
1
:
0
)
)+
":"
+
(
b60Min
?
0
:
(
nowCalendar
.
get
(
Calendar
.
MINUTE
)
+
1
)
);
// 停車費
parkingFee
=
String
.
valueOf
(
carCase
.
getPricing
());
// 使用者名稱
userName
=
"________"
;
}
else
{
// 停車時間
parkingTime
=
(
nHour
+
(
b60Min
?
1
:
0
)
)+
":"
+
(
b60Min
?
0
:
(
nowCalendar
.
get
(
Calendar
.
MINUTE
)
+
1
)
);
// 停車費
parkingFee
=
""
;
// 使用者名稱
userName
=
"________"
;
}
}
else
if
(
carCase
.
vehicleType
.
id
==
13
)
// 身心障礙(社-4)
{
// TODO: 2022/8/18 身心障礙(社-4) 優惠處理
if
(
i
==
0
){
// 停車時間
parkingTime
=
nHour
+
":"
+
nowCalendar
.
get
(
Calendar
.
MINUTE
);
// 停車費
parkingFee
=
String
.
valueOf
(
carCase
.
getPricing
());
// 使用者名稱
userName
=
carCase
.
user
.
name
;
}
else
{
// 停車時間
parkingTime
=
(
nHour
+
(
b60Min
?
1
:
0
)
)+
":"
+
(
b60Min
?
0
:
(
nowCalendar
.
get
(
Calendar
.
MINUTE
)
+
1
)
);
// 停車費
parkingFee
=
String
.
valueOf
(
carCase
.
getPricing
());
// 使用者名稱
userName
=
"________"
;
}
}
}
// 列印繳費金額
if
(!
parkingFee
.
trim
().
isEmpty
()){
cpclPrinter
.
printAndroidFont
(
130
,
printY
,
Typeface
.
SANS_SERIF
,
parkingFee
,
nLineWidth
,
30
);
}
// 列印停車時間
if
(!
parkingTime
.
trim
().
isEmpty
()){
cpclPrinter
.
printAndroidFont
(
15
,
printY
,
Typeface
.
SANS_SERIF
,
parkingTime
,
nLineWidth
,
30
);
}
// 列印簽章 或 底線
if
(!
userName
.
trim
().
isEmpty
()){
cpclPrinter
.
printAndroidFont
(
240
,
printY
,
Typeface
.
SANS_SERIF
,
userName
,
nLineWidth
,
30
);
}
// 累加下一圈
nowCalendar
.
add
(
Calendar
.
MINUTE
,
carCase
.
space
.
getAddMinutes
());
nHour
=
nowCalendar
.
get
(
Calendar
.
HOUR_OF_DAY
);
b60Min
=
nowCalendar
.
get
(
Calendar
.
MINUTE
)
==
59
;
}
}
// 開始列印
// 開始列印
...
...
app/src/main/java/ecom/android/newparkapp/repository/InfoRepository.java
View file @
9d543f85
...
@@ -10,6 +10,7 @@ import ecom.android.newparkapp.dao.CaseDao;
...
@@ -10,6 +10,7 @@ import ecom.android.newparkapp.dao.CaseDao;
import
ecom.android.newparkapp.dao.CasePhotoDao
;
import
ecom.android.newparkapp.dao.CasePhotoDao
;
import
ecom.android.newparkapp.dao.RoadDao
;
import
ecom.android.newparkapp.dao.RoadDao
;
import
ecom.android.newparkapp.dao.SpaceDao
;
import
ecom.android.newparkapp.dao.SpaceDao
;
import
ecom.android.newparkapp.dao.SpaceFeeDao
;
import
ecom.android.newparkapp.dao.SpaceRateDao
;
import
ecom.android.newparkapp.dao.SpaceRateDao
;
import
ecom.android.newparkapp.dao.UserDao
;
import
ecom.android.newparkapp.dao.UserDao
;
import
ecom.android.newparkapp.dao.UserPermissionDao
;
import
ecom.android.newparkapp.dao.UserPermissionDao
;
...
@@ -31,6 +32,7 @@ public class InfoRepository {
...
@@ -31,6 +32,7 @@ public class InfoRepository {
public
UserPermissionDao
userPermissionDao
;
public
UserPermissionDao
userPermissionDao
;
public
SpaceRateDao
spaceRateDao
;
public
SpaceRateDao
spaceRateDao
;
public
SpaceFeeDao
spaceFeeDao
;
public
RoadDao
roadDao
;
public
RoadDao
roadDao
;
public
SpaceDao
spaceDao
;
public
SpaceDao
spaceDao
;
public
CaseDao
caseDao
;
public
CaseDao
caseDao
;
...
@@ -47,6 +49,7 @@ public class InfoRepository {
...
@@ -47,6 +49,7 @@ public class InfoRepository {
userPermissionDao
=
infoDatabase
.
userPermissionDao
();
userPermissionDao
=
infoDatabase
.
userPermissionDao
();
spaceRateDao
=
infoDatabase
.
spaceRateDao
();
spaceRateDao
=
infoDatabase
.
spaceRateDao
();
spaceFeeDao
=
infoDatabase
.
spaceFeeDao
();
roadDao
=
infoDatabase
.
roadDao
();
roadDao
=
infoDatabase
.
roadDao
();
spaceDao
=
infoDatabase
.
spaceDao
();
spaceDao
=
infoDatabase
.
spaceDao
();
caseDao
=
infoDatabase
.
caseDao
();
caseDao
=
infoDatabase
.
caseDao
();
...
...
app/src/main/java/ecom/android/newparkapp/view/T02StartActivity.java
View file @
9d543f85
...
@@ -482,7 +482,7 @@ public class T02StartActivity extends AppCompatActivity {
...
@@ -482,7 +482,7 @@ public class T02StartActivity extends AppCompatActivity {
// 累加時間試算
// 累加時間試算
int
newAddCount
=
t02StartViewModel
.
calcPeriodHourCount
(
tempCase
);
int
newAddCount
=
t02StartViewModel
.
calcPeriodHourCount
(
tempCase
);
float
newPeriodHour
=
newAddCount
*
tempCase
.
space
.
spaceRate
.
perHours
;
float
newPeriodHour
=
newAddCount
*
tempCase
.
space
.
spaceRate
.
perHours
;
int
newFinalExpenses
=
newAddCount
*
tempCase
.
space
.
fee
;
int
newFinalExpenses
=
newAddCount
*
tempCase
.
space
_
fee
;
// 顯示 試算 停車時數 停車費
// 顯示 試算 停車時數 停車費
t03CumulativeTimeDataBinding
.
diaParkingExpensesTextView
.
setText
(
String
.
valueOf
(
newFinalExpenses
));
t03CumulativeTimeDataBinding
.
diaParkingExpensesTextView
.
setText
(
String
.
valueOf
(
newFinalExpenses
));
...
...
app/src/main/java/ecom/android/newparkapp/viewModel/BlueToothPortViewModel.java
View file @
9d543f85
...
@@ -331,8 +331,12 @@ public class BlueToothPortViewModel extends AndroidViewModel {
...
@@ -331,8 +331,12 @@ public class BlueToothPortViewModel extends AndroidViewModel {
return
;
return
;
}
}
String
powerPercentFull
=
printer
.
getPowerPercentFull
();
String
powerPercentFull
=
printer
.
getPowerPercentFull
();
if
(
powerPercentFull
!=
null
||
!
powerPercentFull
.
trim
().
isEmpty
()){
if
(
powerPercentFull
!=
null
){
String
purePowerPercentFull
=
powerPercentFull
.
substring
(
1
,
powerPercentFull
.
length
()
-
2
);
//String purePowerPercentFull = powerPercentFull.substring(1, powerPercentFull.length() - 2);
String
purePowerPercentFull
=
powerPercentFull
.
replaceAll
(
"[\"%]"
,
""
);
if
(
purePowerPercentFull
.
trim
().
isEmpty
()){
return
;
}
float
purePowerPercentFullFloat
=
Float
.
parseFloat
(
purePowerPercentFull
);
float
purePowerPercentFullFloat
=
Float
.
parseFloat
(
purePowerPercentFull
);
printerPowerPercentFull
.
postValue
(
purePowerPercentFullFloat
);
printerPowerPercentFull
.
postValue
(
purePowerPercentFullFloat
);
}
}
...
...
app/src/main/java/ecom/android/newparkapp/viewModel/T01ImportDbViewModel.java
View file @
9d543f85
...
@@ -22,6 +22,7 @@ import ecom.android.newparkapp.R;
...
@@ -22,6 +22,7 @@ import ecom.android.newparkapp.R;
import
ecom.android.newparkapp.converter.SpaceStatusConverter
;
import
ecom.android.newparkapp.converter.SpaceStatusConverter
;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.SpaceFee
;
import
ecom.android.newparkapp.entity.SpaceType
;
import
ecom.android.newparkapp.entity.SpaceType
;
import
ecom.android.newparkapp.entity.SpaceRate
;
import
ecom.android.newparkapp.entity.SpaceRate
;
import
ecom.android.newparkapp.entity.SpaceStatus
;
import
ecom.android.newparkapp.entity.SpaceStatus
;
...
@@ -221,16 +222,15 @@ public class T01ImportDbViewModel extends AndroidViewModel {
...
@@ -221,16 +222,15 @@ public class T01ImportDbViewModel extends AndroidViewModel {
infoRepository
.
spaceDao
.
deleteAll
();
infoRepository
.
spaceDao
.
deleteAll
();
for
(
int
i
=
0
;
i
<
lines
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
lines
.
length
;
i
++)
{
String
[]
columnString
=
lines
[
i
].
trim
().
split
(
"[ ]"
);
String
[]
columnString
=
lines
[
i
].
trim
().
split
(
"[ ]"
);
if
(
columnString
.
length
!=
8
){
break
;
}
if
(
columnString
.
length
!=
7
){
break
;
}
int
fee
,
spaceRateId
,
spaceTypeId
,
spaceStatusId
;
int
fee
,
spaceRateId
,
spaceTypeId
,
spaceStatusId
;
float
latitude
,
longitude
;
float
latitude
,
longitude
;
try
{
try
{
spaceRateId
=
Integer
.
parseInt
(
columnString
[
2
]);
spaceRateId
=
Integer
.
parseInt
(
columnString
[
2
]);
fee
=
Integer
.
parseInt
(
columnString
[
3
]);
spaceTypeId
=
Integer
.
parseInt
(
columnString
[
3
]);
spaceTypeId
=
Integer
.
parseInt
(
columnString
[
4
]);
latitude
=
Float
.
parseFloat
(
columnString
[
4
]);
latitude
=
Float
.
parseFloat
(
columnString
[
5
]);
longitude
=
Float
.
parseFloat
(
columnString
[
5
]);
longitude
=
Float
.
parseFloat
(
columnString
[
6
]);
spaceStatusId
=
Integer
.
parseInt
(
columnString
[
6
]);
spaceStatusId
=
Integer
.
parseInt
(
columnString
[
7
]);
}
catch
(
NumberFormatException
e
){
}
catch
(
NumberFormatException
e
){
break
;
break
;
}
}
...
@@ -249,11 +249,41 @@ public class T01ImportDbViewModel extends AndroidViewModel {
...
@@ -249,11 +249,41 @@ public class T01ImportDbViewModel extends AndroidViewModel {
SpaceStatus
newSpaceStatus
=
SpaceStatusConverter
.
toSpaceStatus
(
spaceStatusId
);
SpaceStatus
newSpaceStatus
=
SpaceStatusConverter
.
toSpaceStatus
(
spaceStatusId
);
Space
newSpace
=
new
Space
(
newId
,
newRoad
,
newSpaceType
,
fee
,
newSpaceRate
,
latitude
,
longitude
,
newSpaceStatus
);
Space
newSpace
=
new
Space
(
newId
,
newRoad
,
newSpaceType
,
newSpaceRate
,
latitude
,
longitude
,
newSpaceStatus
);
infoRepository
.
spaceDao
.
insertAll
(
newSpace
);
infoRepository
.
spaceDao
.
insertAll
(
newSpace
);
}
}
});
});
break
;
break
;
case
SpaceFee:
infoRepository
.
executorService
.
execute
(()->{
infoRepository
.
spaceFeeDao
.
deleteAll
();
for
(
int
i
=
0
;
i
<
lines
.
length
;
i
++)
{
String
[]
columnString
=
lines
[
i
].
trim
().
split
(
"[ ]"
);
if
(
columnString
.
length
!=
3
){
continue
;
}
int
vehicleTypeId
,
spaceRateId
,
fee
;
try
{
vehicleTypeId
=
Integer
.
parseInt
(
columnString
[
0
]);
spaceRateId
=
Integer
.
parseInt
(
columnString
[
1
]);
fee
=
Integer
.
parseInt
(
columnString
[
2
]);
}
catch
(
NumberFormatException
e
){
continue
;
}
List
<
VehicleType
>
vehicleTypeList
=
infoRepository
.
vehicleTypeDao
.
loadAllByIds
(
new
int
[]{
vehicleTypeId
});
if
(
vehicleTypeList
.
size
()
==
0
){
continue
;}
VehicleType
vehicleType
=
vehicleTypeList
.
get
(
0
);
List
<
SpaceRate
>
spaceRateList
=
infoRepository
.
spaceRateDao
.
loadAllByIds
(
new
int
[]{
spaceRateId
});
if
(
spaceRateList
.
size
()
==
0
){
continue
;}
SpaceRate
spaceRate
=
spaceRateList
.
get
(
0
);
SpaceFee
spaceFee
=
new
SpaceFee
(
0
,
vehicleType
,
spaceRate
,
fee
);
infoRepository
.
spaceFeeDao
.
insertAll
(
spaceFee
);
}
});
break
;
default
:
default
:
message
=
dbTableName
.
name
()
+
" 為無效方法"
;
message
=
dbTableName
.
name
()
+
" 為無效方法"
;
break
;
break
;
...
@@ -262,6 +292,6 @@ public class T01ImportDbViewModel extends AndroidViewModel {
...
@@ -262,6 +292,6 @@ public class T01ImportDbViewModel extends AndroidViewModel {
}
}
public
enum
DBTableName
{
public
enum
DBTableName
{
UserPermission
,
User
,
VehicleBrand
,
VehicleColor
,
VehicleType
,
SpaceRate
,
Road
,
Space
UserPermission
,
User
,
VehicleBrand
,
VehicleColor
,
VehicleType
,
SpaceRate
,
Road
,
Space
,
SpaceFee
}
}
}
}
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/viewModel/T02StartViewModel.java
View file @
9d543f85
...
@@ -35,6 +35,7 @@ import ecom.android.newparkapp.entity.CaseStatus;
...
@@ -35,6 +35,7 @@ import ecom.android.newparkapp.entity.CaseStatus;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Shift
;
import
ecom.android.newparkapp.entity.Shift
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.SpaceFee
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.entity.VehicleType
;
import
ecom.android.newparkapp.entity.VehicleType
;
import
ecom.android.newparkapp.repository.InfoRepository
;
import
ecom.android.newparkapp.repository.InfoRepository
;
...
@@ -104,9 +105,12 @@ public class T02StartViewModel extends AndroidViewModel {
...
@@ -104,9 +105,12 @@ public class T02StartViewModel extends AndroidViewModel {
public
boolean
isLastCase
(){
return
(
caseCursor
.
getValue
()+
1
)
>=
cases
.
size
();}
public
boolean
isLastCase
(){
return
(
caseCursor
.
getValue
()+
1
)
>=
cases
.
size
();}
public
void
setCurrentUser
(
User
user
){
currentUser
.
setValue
(
user
);};
public
void
setCurrentUser
(
User
user
){
currentUser
.
setValue
(
user
);};
public
LiveData
<
Case
>
getCurrentCase
(){
return
currentCase
;}
public
LiveData
<
Case
>
getCurrentCase
(){
return
currentCase
;}
public
void
setVehicleType
(
VehicleType
vehicleType
){
public
void
setVehicleType
(
VehicleType
vehicleType
){
Case
tempCase
=
currentCase
.
getValue
();
Case
tempCase
=
currentCase
.
getValue
();
tempCase
.
vehicleType
=
vehicleType
;
tempCase
.
vehicleType
=
vehicleType
;
// 取得車格後,更新費用及時間
getSpaceFee
(
tempCase
);
currentCase
.
setValue
(
tempCase
);
currentCase
.
setValue
(
tempCase
);
}
}
...
@@ -115,13 +119,21 @@ public class T02StartViewModel extends AndroidViewModel {
...
@@ -115,13 +119,21 @@ public class T02StartViewModel extends AndroidViewModel {
tempCase
.
space
=
space
;
tempCase
.
space
=
space
;
// 取得車格後,更新費用及時間
// 取得車格後,更新費用及時間
if
(
tempCase
.
caseStatus
==
CaseStatus
.
NEW
){
getSpaceFee
(
tempCase
);
currentCase
.
setValue
(
tempCase
);
}
private
void
getSpaceFee
(
Case
tempCase
){
if
(
tempCase
.
caseStatus
==
CaseStatus
.
NEW
&&
tempCase
.
space
!=
null
&&
tempCase
.
vehicleType
!=
null
){
Space
space
=
tempCase
.
space
;
VehicleType
vehicleType
=
tempCase
.
vehicleType
;
SpaceFee
spaceFee
=
infoRepository
.
spaceFeeDao
.
findByName
(
space
.
spaceRate
.
id
,
vehicleType
.
id
);
tempCase
.
space_fee
=
spaceFee
==
null
?
20
:
spaceFee
.
fee
;
int
addCount
=
calcPeriodHourCount
(
tempCase
);
int
addCount
=
calcPeriodHourCount
(
tempCase
);
tempCase
.
periodHour
=
addCount
*
space
.
spaceRate
.
perHours
;
tempCase
.
periodHour
=
addCount
*
space
.
spaceRate
.
perHours
;
tempCase
.
finalExpenses
=
addCount
*
space
.
fee
;
tempCase
.
finalExpenses
=
addCount
*
tempCase
.
space_
fee
;
}
}
currentCase
.
setValue
(
tempCase
);
}
}
/**
/**
...
@@ -566,7 +578,7 @@ public class T02StartViewModel extends AndroidViewModel {
...
@@ -566,7 +578,7 @@ public class T02StartViewModel extends AndroidViewModel {
// 更新累加時間
// 更新累加時間
int
addCount
=
calcPeriodHourCount
(
tempCase
);
int
addCount
=
calcPeriodHourCount
(
tempCase
);
tempCase
.
periodHour
=
addCount
*
tempCase
.
space
.
spaceRate
.
perHours
;
tempCase
.
periodHour
=
addCount
*
tempCase
.
space
.
spaceRate
.
perHours
;
tempCase
.
finalExpenses
=
addCount
*
tempCase
.
space
.
fee
;
tempCase
.
finalExpenses
=
addCount
*
tempCase
.
space
_
fee
;
// 取得完整路徑
// 取得完整路徑
final
String
path
=
photoFile
.
getAbsolutePath
();
final
String
path
=
photoFile
.
getAbsolutePath
();
...
...
相關文件/基本資料/Space
View file @
9d543f85
A209 A 0
2 30
01 23.4799691 120.448693 01
A209 A 0
1
01 23.4799691 120.448693 01
A211 A 0
2 30
01 23.4799691 120.448693 01
A211 A 0
1
01 23.4799691 120.448693 01
A213 A 0
2 30
01 23.4799791 120.4486883 01
A213 A 0
1
01 23.4799791 120.4486883 01
A215 A 0
2 30
01 23.4799762 120.4486685 01
A215 A 0
1
01 23.4799762 120.4486685 01
N066 N 02
40
02 23.4894827 120.4303129 01
N066 N 02 02 23.4894827 120.4303129 01
N068 N 02
40
02 23.4895994 120.4303028 01
N068 N 02 02 23.4895994 120.4303028 01
N070 N 02
40
02 23.4900085 120.4301186 01
N070 N 02 02 23.4900085 120.4301186 01
相關文件/基本資料/SpaceFee
0 → 100644
View file @
9d543f85
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
相關文件/基本資料/VehicleType
View file @
9d543f85
...
@@ -6,11 +6,9 @@
...
@@ -6,11 +6,9 @@
06 大自客貨
06 大自客貨
07 遊覽車
07 遊覽車
08 大營貨
08 大營貨
09 大型機車
10 計程車
10 計程車
11 交通車
11 交通車
12 身心障礙(府-2)
12 身心障礙(府-2)
13 身心障礙(社-4)
13 身心障礙(社-4)
14 其他
14 其他
31 輕機
31 輕機
32 重機
\ No newline at end of file
\ No newline at end of file
相關文件/新嘉義開單APP-內部技術文件.docx
0 → 100644
View file @
9d543f85
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment