Commit e2e0907e authored by YONG-LIN SU's avatar YONG-LIN SU

新增累計頁面

parent 2f612abc
......@@ -31,6 +31,7 @@
<entry key="..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t03_cumulative.xml" value="0.34375" />
<entry key="..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t03_img_viewer.xml" value="0.34375" />
<entry key="..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t03_list_files.xml" value="0.34375" />
<entry key="..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t03_total.xml" value="0.34375" />
<entry key="..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/alert_dialog_t03_cumulative_time.xml" value="0.34375" />
<entry key="..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/card_view_image_plate_number_item.xml" value="0.34375" />
<entry key="..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/card_view_list_files_item.xml" value="0.34375" />
......
......@@ -27,9 +27,7 @@
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
tools:targetApi="31">
<activity
android:name=".view.T03ListFilesActivity"
android:exported="false" />
<activity
android:name=".view.MainActivity"
android:exported="true">
......@@ -53,6 +51,7 @@
android:exported="false"
android:label="系統公告"
android:theme="@style/Theme.AppCompat.Light" />
<activity
android:name=".view.T02KeyInPlateNumberActivity"
android:exported="false" />
......@@ -71,9 +70,17 @@
<activity
android:name=".view.T02SelectUserActivity"
android:exported="false" />
<activity
android:name=".view.T03ImgViewerActivity"
android:exported="false" />
<activity
android:name=".view.T03TotalActivity"
android:exported="false"
android:label="累計"/>
<activity
android:name=".view.T03ListFilesActivity"
android:exported="false" />
<provider
android:name="androidx.core.content.FileProvider"
......
package ecom.android.newparkapp;
import java.io.File;
import java.io.FilenameFilter;
public class FilesFilter implements FilenameFilter {
private boolean bImgList;
private String szUserId;
private String szDate;
private String szExtended;
public FilesFilter(String szId, String szDate, String szExt, boolean bImgList) {
this.szUserId = szId;
this.szDate = szDate;
this.szExtended = szExt;
this.bImgList = bImgList;
}
public FilesFilter(String szId, String szExt, boolean bImgList) {
this.szUserId = szId;
this.szExtended = szExt;
this.bImgList = bImgList;
}
public boolean accept(File dir, String name) {
if (this.bImgList) {
return (name.regionMatches(0, szUserId, 0, 11) && name.endsWith("." + szExtended));//檢查前11碼
} else if (szExtended.compareTo("jpg") == 0) {
return (name.regionMatches(0, szUserId, 0, 2) && name.endsWith("." + szExtended));//只檢查前2碼
} else if (szExtended.compareTo(".txt") == 0) {
return (name.regionMatches(0, szUserId, 0, 2) && name.endsWith(szExtended));
} else {
return (name.regionMatches(1, szUserId, 0, 2) && name.endsWith("." + szExtended));
}
//return (name.endsWith(".txt"));
}
}
......@@ -80,6 +80,7 @@ public class T02StartActivity extends AppCompatActivity {
dataBinding.btnPhotoCount.setOnClickListener(v -> btnPhotoCountOnClicked());
dataBinding.btnCumulativeTime.setOnClickListener(v -> btnCumulativeTimeOnClicked());
dataBinding.btnInventory.setOnClickListener(v -> btnInventoryOnClicked());
dataBinding.btnMonthlyReport.setOnClickListener( v -> btnMonthlyReportOnClicked());
dataBinding.btnStartBack.setOnClickListener(v -> {finish();});
......@@ -350,4 +351,15 @@ public class T02StartActivity extends AppCompatActivity {
intent.setClass(this, T03ListFilesActivity.class);
inventoryActivityResultLauncher.launch(intent);
}
private void btnMonthlyReportOnClicked(){
Intent intent = new Intent();
intent.setClass(this, T03TotalActivity.class);
Bundle bundle = new Bundle();
bundle.putString("USER_ID", String.valueOf(currentUser.id));
intent.putExtras(bundle);
startActivity(intent);
}
}
\ No newline at end of file
package ecom.android.newparkapp.view;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Toast;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Objects;
import ecom.android.newparkapp.Common;
import ecom.android.newparkapp.FilesFilter;
import ecom.android.newparkapp.R;
import ecom.android.newparkapp.databinding.ActivityT03TotalBinding;
public class T03TotalActivity extends AppCompatActivity {
private ActivityT03TotalBinding dataBinding;
int nTotalMonth;
int nCanceledMonth;
int nExpensesMonth;
double dTimesMonth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_t03_total);
Init();
}
private void Init() {
Bundle bundle = this.getIntent().getExtras();
if (bundle != null) {
String szUserId = bundle.getString("USER_ID");
// 取得當天日期
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String szYYMMDD = simpleDateFormat.format(date);
// 取得存放目錄
String szTmpPath = Environment.getExternalStorageDirectory() + getApplication().getString(R.string.sysData_path) + szYYMMDD;
CalcToday(szUserId, szTmpPath, szYYMMDD, false);
CalcMonth(szUserId, szTmpPath, szYYMMDD);
} else {
Toast.makeText(this, "資料異常!", Toast.LENGTH_LONG).show();
finish();
}
}
private void CalcToday(String szUserId, String szPath, String szYYMMDD, boolean bMonth) {
int nTotalToday = 0;
int nCanceledToday = 0;
int nExpensesToday = 0;
double dTimesToday = 0.0;
boolean bError = false;
File fileTemp = new File(szPath);
if (!fileTemp.isDirectory())
return;
if (Objects.requireNonNull(fileTemp.listFiles(new FilesFilter(szUserId, szYYMMDD, "txt", false))).length > 0) {
for (File file : Objects.requireNonNull(fileTemp.listFiles(new FilesFilter(szUserId, szYYMMDD, "txt", false)))) {
try {
String szPathTemp = szPath + "/" + file.getName();
String[] arrayCars = Common.readTXT(szPathTemp, "\r\n");
for (int i = 0; i < arrayCars.length; i++) {
bError = false;
String[] arrayItem = arrayCars[i].split(";");
if (arrayItem.length < 12)
continue;
for (int j = 0; j < 12; ++j) {
if (arrayItem[j].length() < 1) {
bError = true;
break;
}
}
if (bError)
continue;
nTotalToday++;
dTimesToday += Double.parseDouble(arrayItem[10]);
nExpensesToday += Integer.parseInt(arrayItem[11]);
if (arrayItem.length < 14) {
nCanceledToday += 0;
} else {
nCanceledToday += (Integer.parseInt(arrayItem[13]) > 0) ? 0 : 1;
}
}
} catch (Exception e) {
continue;
}
// nCanceledToday++;
}
if (!bMonth) {
dataBinding.totalbillsTodayTextView.setText(String.valueOf(nTotalToday));
dataBinding.totalCanceledTodayTextView.setText(String.valueOf(nCanceledToday));
dataBinding.totalTimesTodayTextView.setText(String.valueOf(dTimesToday));
dataBinding.totalExpensesTodayTextView.setText(String.valueOf(nExpensesToday));
} else {
nTotalMonth += nTotalToday;
nCanceledMonth += nCanceledToday;
nExpensesMonth += nExpensesToday;
dTimesMonth += dTimesToday;
}
}
}
private void CalcMonth(String szUserId, String szPath, String szYYMMDD) {
String szPathMonth;
nTotalMonth = 0;
nCanceledMonth = 0;
nExpensesMonth = 0;
dTimesMonth = 0.0;
for (int i = 1; i < 32; ++i) {
szPathMonth = String.format(Locale.TAIWAN, "%s%02d", szPath.substring(0, szPath.length() - 2), i);
CalcToday(szUserId, szPathMonth, szYYMMDD, true);
// Toast.makeText(T03_Total.this, szPathMonth, Toast.LENGTH_LONG).show();
}
dataBinding.totalbillsMonthTextView.setText(String.valueOf(nTotalMonth));
dataBinding.totalCanceledMonthTextView.setText(String.valueOf(nCanceledMonth));
dataBinding.totalTimesMonthTextView.setText(String.valueOf(dTimesMonth));
dataBinding.totalExpensesMonthTextView.setText(String.valueOf(nExpensesMonth));
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:paddingStart="20dp"
android:paddingTop="10dp"
android:paddingEnd="10dp"
android:paddingBottom="350dp"
tools:context=".view.T03TotalActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:orientation="horizontal">
<Space
android:id="@+id/space6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/textView18"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="本日"
android:textSize="21sp" />
<TextView
android:id="@+id/textView20"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="本月"
android:textSize="21sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="總單數"
android:textSize="21sp" />
<TextView
android:id="@+id/totalbillsToday_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="0"
android:textSize="21sp" />
<TextView
android:id="@+id/totalbillsMonth_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="0"
android:textSize="21sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView17"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="總時數"
android:textSize="21sp"
app:layout_constraintBottom_toTopOf="@+id/textView19"
app:layout_constraintEnd_toStartOf="@+id/totalTimesToday_textView"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_weight="0.3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView8" />
<TextView
android:id="@+id/totalTimesToday_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="0.0"
android:textSize="21sp" />
<TextView
android:id="@+id/totalTimesMonth_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="0.0"
android:textSize="21sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView19"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="總停車費"
android:textSize="21sp" />
<TextView
android:id="@+id/totalExpensesToday_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="0"
android:textSize="21sp" />
<TextView
android:id="@+id/totalExpensesMonth_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="0"
android:textSize="21sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView16"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="註銷數"
android:textSize="21sp" />
<TextView
android:id="@+id/totalCanceledToday_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="0"
android:textSize="21sp" />
<TextView
android:id="@+id/totalCanceledMonth_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="0"
android:textSize="21sp" />
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</layout>
\ 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