feat:首页、新建工单、工单列表

asv2022.3.1
wanghao 2 months ago
parent 94a5a31ad6
commit 6377a5db0c

@ -3,6 +3,6 @@
<component name="com.codeverse.userSettings.MarscodeWorkspaceAppSettingsState">
<option name="CKGUserStarteByUser" value="true" />
<option name="ckgOperationStatus" value="CONFIRM" />
<option name="lastCKGNotifyTime" value="1776143559177" />
<option name="lastCKGNotifyTime" value="1776232549724" />
</component>
</project>

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="WizardSettings">
<option name="children">
<map>
<entry key="vectorWizard">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="vectorAssetStep">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="outputName" value="ic_sanjiao" />
<entry key="sourceFile" value="D:\下 拉.svg" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</component>
</project>

@ -3,13 +3,13 @@ plugins {
}
android {
namespace "com.example.tyre"
compileSdk 33
compileSdk 34
// compileSdkVersion 29
// buildToolsVersion '29.0.0'
defaultConfig {
applicationId "com.example.tyre"
minSdk 24
targetSdk 33
minSdk 26
targetSdk 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -23,8 +23,12 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
buildFeatures {
viewBinding true
dataBinding true
}
}
@ -41,11 +45,13 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.jakewharton:butterknife:10.2.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
// implementation 'com.jakewharton:butterknife:10.2.0'
// annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
implementation 'com.lzy.net:okgo:3.0.4'
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'androidx.recyclerview:recyclerview:1.3.0'
implementation files('libs/uhfcom13_v15.jar')
implementation files('libs/SerialPort.jar')
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'com.google.android.material:material:1.11.0'
}

@ -6,10 +6,12 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
@ -22,12 +24,32 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity android:name=".MainActivity2">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<activity
android:name=".maintenance.CreateWorkOrderActivity"
android:exported="false"
android:theme="@style/news"/>
<activity
android:name=".maintenance.WorkOrderActivity"
android:exported="false"
android:theme="@style/news" />
<activity
android:name=".maintenance.NewHomePageActivity"
android:exported="true"
android:theme="@style/news">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity2">
<!-- <intent-filter> -->
<!-- <action android:name="android.intent.action.MAIN" /> -->
<!-- <category android:name="android.intent.category.LAUNCHER" /> -->
<!-- </intent-filter> -->
</activity>
<activity
android:name=".TyreLayoutActivity"
@ -47,22 +69,17 @@
</activity>
<activity
android:name=".HomePageActivity"
android:exported="false">
android:exported="true" />
<activity android:name=".TyreSearchActivity" />
<activity
android:name=".MainActivity"
android:exported="true">
<!-- <intent-filter> -->
<!-- <action android:name="android.intent.action.MAIN" /> -->
<!-- <category android:name="android.intent.category.LAUNCHER" /> -->
<!-- </intent-filter> -->
</activity>
<activity android:name=".TyreSearchActivity" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".OutStoreHouseActivity"
android:exported="false" />

@ -15,9 +15,7 @@ import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.android.hdhe.uhf.reader.UhfReader;
@ -49,27 +47,28 @@ import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivityCheckBinding;
public class CheckActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
@BindView(R.id.epc_display) TextInputEditText epcInput;
@BindView(R.id.th) TextInputEditText tyreNoInput;
@BindView(R.id.zbh) TextInputEditText selfNoInput;
@BindView(R.id.tyrecon) TextInputEditText remarkInput;
@BindView(R.id.patternDepth) TextInputEditText patternDepthInput;
@BindView(R.id.mileage) TextInputEditText mileageInput;
private ActivityCheckBinding binding;
@BindView(R.id.epc_layout) TextInputLayout epcLayout;
@BindView(R.id.th_layout) TextInputLayout tyreNoLayout;
@BindView(R.id.zbh_layout) TextInputLayout selfNoLayout;
@BindView(R.id.mileage_layout) TextInputLayout mileageNoLayout;
@BindView(R.id.patternDepth_layout) TextInputLayout patternDepthNoLayout;
TextInputEditText epcInput;
TextInputEditText tyreNoInput;
TextInputEditText selfNoInput;
TextInputEditText remarkInput;
TextInputEditText patternDepthInput;
TextInputEditText mileageInput;
@BindView(R.id.result) Spinner resultSpinner;
@BindView(R.id.CheckTypeSpinner) Spinner checkTypeSpinner;
TextInputLayout epcLayout;
TextInputLayout tyreNoLayout;
TextInputLayout selfNoLayout;
TextInputLayout mileageNoLayout;
TextInputLayout patternDepthNoLayout;
Spinner resultSpinner;
Spinner checkTypeSpinner;
private boolean isStart = true;
@ -88,8 +87,10 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check);
ButterKnife.bind(this);
binding = ActivityCheckBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
manager = MyApplication.getManager();
listEPC = new ArrayList<EPC>();
Thread thread = new InventoryThread();
@ -101,6 +102,24 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt
showLoadingDialog();
}
private void bindViews() {
epcInput = binding.epcDisplay;
tyreNoInput = binding.th;
selfNoInput = binding.zbh;
remarkInput = binding.tyrecon;
patternDepthInput = binding.patternDepth;
mileageInput = binding.mileage;
epcLayout = binding.epcLayout;
tyreNoLayout = binding.thLayout;
selfNoLayout = binding.zbhLayout;
mileageNoLayout = binding.mileageLayout;
patternDepthNoLayout = binding.patternDepthLayout;
resultSpinner = binding.result;
checkTypeSpinner = binding.checkTypeSpinner;
}
@Override
public void onResume() {
super.onResume();
@ -221,8 +240,10 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt
Log.e("EPC", "listepc:+ " + listepc);
}
private void clearData() {
listEPC.removeAll(listEPC);
listepc.removeAll(listepc);
// listEPC.removeAll(listEPC);
// listepc.removeAll(listepc);
listEPC.clear();
listepc.clear();
}
private void showLoadingDialog() {
progressDialog = new ProgressDialog(this);
@ -276,14 +297,7 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()) {
case R.id.result:
// checkresult.setText(parent.getItemAtPosition(position).toString());
break;
case R.id.CheckTypeSpinner:
// checktype.setText(parent.getItemAtPosition(position).toString());
break;
}
}
@ -292,41 +306,39 @@ public class CheckActivity extends AppCompatActivity implements AdapterView.OnIt
}
@OnClick({R.id.wc, R.id.fh})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.wc:
String rfid=epcInput.getText().toString();
String selectedResult = resultSpinner.getSelectedItem().toString();
String checkType = checkTypeSpinner.getSelectedItem().toString();
String remark = remarkInput.getText().toString();
String mileage = mileageInput.getText().toString().trim();
String patternDepth = patternDepthInput.getText().toString().trim();
String tyreNo = tyreNoInput.getText().toString().trim();
String selfNo = selfNoInput.getText().toString().trim();
if (rfid == null || rfid.isEmpty() || rfid.equals("等待扫描..."))
{
epcLayout.setError("请扫描芯片");
return;
}
if (tyreNo == null || tyreNo.isEmpty())
{
tyreNoLayout.setError("请检查胎号数据");
return;
}
if (selfNo == null || selfNo.isEmpty())
{
selfNoLayout.setError("请检查自编号数据");
return;
}
showLoadingDialog();
insert_check_record(rfid,selectedResult,remark,checkType,mileage,patternDepth);
break;
case R.id.fh:
Intent intent=new Intent(this,HomePageActivity.class);
startActivity(intent);
break;
}
private void setupClickListeners() {
binding.wc.setOnClickListener(v -> {
String rfid=epcInput.getText().toString();
String selectedResult = resultSpinner.getSelectedItem().toString();
String checkType = checkTypeSpinner.getSelectedItem().toString();
String remark = remarkInput.getText().toString();
String mileage = mileageInput.getText().toString().trim();
String patternDepth = patternDepthInput.getText().toString().trim();
String tyreNo = tyreNoInput.getText().toString().trim();
String selfNo = selfNoInput.getText().toString().trim();
if (rfid == null || rfid.isEmpty() || rfid.equals("等待扫描..."))
{
epcLayout.setError("请扫描芯片");
return;
}
if (tyreNo == null || tyreNo.isEmpty())
{
tyreNoLayout.setError("请检查胎号数据");
return;
}
if (selfNo == null || selfNo.isEmpty())
{
selfNoLayout.setError("请检查自编号数据");
return;
}
showLoadingDialog();
insert_check_record(rfid,selectedResult,remark,checkType,mileage,patternDepth);
});
binding.fh.setOnClickListener(v -> {
Intent intent=new Intent(this,HomePageActivity.class);
startActivity(intent);
});
}
// 防抖延迟时间 (毫秒)

@ -46,30 +46,21 @@ import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivityDownBinding;
public class DownActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
public class DownActivity extends AppCompatActivity {
private ActivityDownBinding binding;
@BindView(R.id.epc)
TextView EPC;
@BindView(R.id.car)
TextView car;
@BindView(R.id.start)
EditText start;
@BindView(R.id.azlw)
TextView azlw;
@BindView(R.id.ok)
Button ok;
@BindView(R.id.back)
Button back;
@BindView(R.id.th)
TextView th;
@BindView(R.id.zbh)
TextView zbh;
@BindView(R.id.patternDepth)
EditText patternDepth;
private boolean isStart = true;
private ProgressDialog progressDialog;
@ -87,8 +78,10 @@ public class DownActivity extends AppCompatActivity implements AdapterView.OnIte
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_down);
ButterKnife.bind(this);
binding = ActivityDownBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
manager = MyApplication.getManager();
listEPC = new ArrayList<EPC>();
Thread thread = new InventoryThread();
@ -97,6 +90,55 @@ public class DownActivity extends AppCompatActivity implements AdapterView.OnIte
}
private void bindViews() {
EPC = binding.epc;
car = binding.car;
start = binding.start;
azlw = binding.azlw;
ok = binding.ok;
back = binding.back;
th = binding.th;
zbh = binding.zbh;
patternDepth = binding.patternDepth;
}
private void setupClickListeners() {
binding.ok.setOnClickListener(v -> {
String rfid=EPC.getText().toString();
String carNo = car.getText().toString();
String millage = start.getText().toString();
String wheel = azlw.getText().toString();
String depth = patternDepth.getText().toString();
if (rfid == null || rfid.isEmpty())
{
new CommonDialog(DownActivity.this).setMessage("请扫描轮胎!").show();
return;
}
if (carNo == null || carNo.isEmpty())
{
new CommonDialog(DownActivity.this).setMessage("该轮胎未安装!").show();
return;
}
if (millage == null || millage.isEmpty())
{
new CommonDialog(DownActivity.this).setMessage("请输入卸胎里程!").show();
return;
}
if (wheel == null || wheel.isEmpty())
{
new CommonDialog(DownActivity.this).setMessage("该轮胎未安装!").show();
return;
}
showLoadingDialog();
down_insert(rfid,carNo,millage,wheel,depth);
});
binding.back.setOnClickListener(v -> {
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
});
}
@Override
public void onResume() {
super.onResume();
@ -264,56 +306,6 @@ public class DownActivity extends AppCompatActivity implements AdapterView.OnIte
private void unregisterReceiver() {
unregisterReceiver(keyReceiver);
}
@OnClick({R.id.ok, R.id.back})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.ok:
String rfid=EPC.getText().toString();
String carNo = car.getText().toString();
String millage = start.getText().toString();
String wheel = azlw.getText().toString();
String depth = patternDepth.getText().toString();
if (rfid == null || rfid.isEmpty())
{
new CommonDialog(DownActivity.this).setMessage("请扫描轮胎!").show();
return;
}
if (carNo == null || carNo.isEmpty())
{
new CommonDialog(DownActivity.this).setMessage("该轮胎未安装!").show();
return;
}
if (millage == null || millage.isEmpty())
{
new CommonDialog(DownActivity.this).setMessage("请输入卸胎里程!").show();
return;
}
if (wheel == null || wheel.isEmpty())
{
new CommonDialog(DownActivity.this).setMessage("该轮胎未安装!").show();
return;
}
showLoadingDialog();
down_insert(rfid,carNo,millage,wheel,depth);
break;
case R.id.back:
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
break;
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
// 基本信息查询
private void find(String epc) {
OkGo.<String>post(MyUrl.url + "/tyre/tyre/pdaQueryTyreInfo").tag(this).params("tyreEpc", epc)
.execute(new StringCallback() {

@ -10,28 +10,23 @@ import android.widget.RadioButton;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import com.example.tyre.databinding.ActivityHomePageBinding;
import com.example.tyre.maintenance.NewHomePageActivity;
/**
* Created by on 2019/12/3.
*/
public class HomePageActivity extends AppCompatActivity {
@BindView(R.id.chaxun)
private ActivityHomePageBinding binding;
RadioButton chaxun;
@BindView(R.id.ruku)
RadioButton ruku;
@BindView(R.id.chuku)
RadioButton chuku;
@BindView(R.id.zhuangxie)
RadioButton zhuangxie;
@BindView(R.id.huanwei)
RadioButton huanwei;
@BindView(R.id.zhijian)
RadioButton zhijian;
@BindView(R.id.logout)
Button logout;
private long exitTime = 0;
@ -39,52 +34,70 @@ public class HomePageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_homepage);
ButterKnife.bind(this);
binding = ActivityHomePageBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
}
/**
* 1 R.id.logout
*/
@OnClick({R.id.chaxun, R.id.ruku, R.id.chuku, R.id.zhuangxie, R.id.huanwei, R.id.zhijian, R.id.xxbd,R.id.test1, R.id.logout})
public void onViewClicked(View view) {
Intent intent; // 建议在这里声明,而不是方法最开始
private void bindViews() {
chaxun = binding.chaxun;
ruku = binding.ruku;
chuku = binding.chuku;
zhuangxie = binding.zhuangxie;
huanwei = binding.huanwei;
zhijian = binding.zhijian;
logout = binding.logout;
}
switch (view.getId()) {
case R.id.chaxun:
intent = new Intent(this, TyreSearchActivity.class);
break;
case R.id.ruku:
intent = new Intent(this, InStoreHouseActivity.class);
break;
case R.id.chuku:
intent = new Intent(this, OutStoreHouseActivity.class);
break;
case R.id.zhuangxie:
intent = new Intent(this, UpActivity.class);
break;
case R.id.huanwei:
intent = new Intent(this, DownActivity.class);
break;
case R.id.zhijian:
intent = new Intent(this, CheckActivity.class);
break;
case R.id.xxbd:
intent = new Intent(this, TestActivity.class);
break;
case R.id.test1:
intent = new Intent(this, TyreLayoutActivity.class);
break;
case R.id.logout:
// 修改点 2处理退出逻辑
handleLogout();
return; // 退出后直接返回,不需要执行下面的 startActivity
default:
return;
}
private void setupClickListeners() {
binding.chaxun.setOnClickListener(v -> {
Intent intent = new Intent(this, TyreSearchActivity.class);
startActivity(intent);
});
// 只有非退出按钮才执行跳转
startActivity(intent);
binding.ruku.setOnClickListener(v -> {
Intent intent = new Intent(this, InStoreHouseActivity.class);
startActivity(intent);
});
binding.chuku.setOnClickListener(v -> {
Intent intent = new Intent(this, OutStoreHouseActivity.class);
startActivity(intent);
});
binding.zhuangxie.setOnClickListener(v -> {
Intent intent = new Intent(this, UpActivity.class);
startActivity(intent);
});
binding.huanwei.setOnClickListener(v -> {
Intent intent = new Intent(this, DownActivity.class);
startActivity(intent);
});
binding.zhijian.setOnClickListener(v -> {
Intent intent = new Intent(this, CheckActivity.class);
startActivity(intent);
});
binding.xxbd.setOnClickListener(v -> {
Intent intent = new Intent(this, TestActivity.class);
startActivity(intent);
});
binding.test1.setOnClickListener(v -> {
Intent intent = new Intent(this, TyreLayoutActivity.class);
startActivity(intent);
});
binding.logout.setOnClickListener(v -> {
handleLogout();
});
binding.inNewSystem.setOnClickListener(v -> {
Intent intent = new Intent(this, NewHomePageActivity.class);
startActivity(intent);
});
}
/**

@ -6,8 +6,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.Log;
import android.view.KeyEvent;
@ -21,88 +19,57 @@ import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.android.hdhe.uhf.reader.UhfReader;
import com.android.hdhe.uhf.readerInterface.TagModel;
import com.example.tyre.databinding.ActivityInstorehouseBinding;
import com.example.tyre.entity.AjaxResult;
import com.example.tyre.entity.BaseTyre;
import com.example.tyre.entity.EPC;
import com.example.tyre.entity.InStoreSpinnerVo;
import com.example.tyre.entity.Tyre;
import com.example.tyre.util.CommonDialog;
import com.example.tyre.util.MyUrl;
import com.example.tyre.util.PlayMusic;
import com.example.tyre.util.SharedPreferencesUtils;
import com.example.tyre.util.Util;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
/**
* Created by on 2019/12/10.
*/
public class InStoreHouseActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
public class InStoreHouseActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
@BindView(R.id.button)
Button button;
@BindView(R.id.epc)
TextView scan;
@BindView(R.id.pinpai)
TextView pinpai;
@BindView(R.id.xinghao)
TextView xinghao;
@BindView(R.id.cengji)
TextView cengji;
@BindView(R.id.huawen)
TextView huawen;
@BindView(R.id.gcts)
TextView gcts;
@BindView(R.id.back)
Button back;
@BindView(R.id.wtbm)
EditText wtbm;
// @BindView(R.id.zbh)
// EditText zbh;
// @BindView(R.id.spinner)
// Spinner spinner;
@BindView(R.id.linearLayout3)
LinearLayout linearLayout3;
// @BindView(R.id.czy)
// TextView czy;
@BindView(R.id.tyrekind)
TextView tyrekind;
@BindView(R.id.spinnerkind)
Spinner spinnerkind;
@BindView(R.id.spinnerpattern)
Spinner spinnerpattern;
@BindView(R.id.spinnerlevel)
Spinner spinnerlevel;
@BindView(R.id.spinnerSize)
Spinner spinnerSize;
@BindView(R.id.spinnerBrand)
Spinner spinnerBrand;
@BindView(R.id.spinnergcts)
Spinner spinnergcts;
// private UHFService mDevice;
long lastTime;
long nextTime;
private ActivityInstorehouseBinding binding;
// private UHFService mDevice;
// private MyHandler handler;
private boolean isStart = true;
private ProgressDialog progressDialog;
@ -111,11 +78,17 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
private UhfReader manager; // UHF manager,UHF Operating handle
private ArrayList<EPC> listEPC;
private ArrayList<String> listepc = new ArrayList<String>();
private Toast mToast;
private Toast toast;
private KeyReceiver keyReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_instorehouse);
ButterKnife.bind(this);
binding = ActivityInstorehouseBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
manager = MyApplication.getManager();
check_spinner();
showLoadingDialog();
@ -129,14 +102,59 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
Thread thread = new InventoryThread();
thread.start();
com.example.tyre.util.Util.initSoundPool(this);
// spinner.setOnItemSelectedListener(this);
}
private void bindViews() {
button = binding.button;
scan = binding.epc;
pinpai = binding.pinpai;
xinghao = binding.xinghao;
cengji = binding.cengji;
huawen = binding.huawen;
gcts = binding.gcts;
back = binding.back;
wtbm = binding.wtbm;
linearLayout3 = binding.linearLayout3;
tyrekind = binding.tyrekind;
spinnerkind = binding.spinnerkind;
spinnerpattern = binding.spinnerpattern;
spinnerlevel = binding.spinnerlevel;
spinnerSize = binding.spinnerSize;
spinnerBrand = binding.spinnerBrand;
spinnergcts = binding.spinnergcts;
}
private void setupClickListeners() {
binding.button.setOnClickListener(v -> {
String epc = scan.getText().toString();
String w = wtbm.getText().toString();
String p = pinpai.getText().toString();
String x = xinghao.getText().toString();
String c = cengji.getText().toString();
String h = huawen.getText().toString();
String t = tyrekind.getText().toString();
String g = gcts.getText().toString();
if (scan.getText().toString() == "") {
new CommonDialog(InStoreHouseActivity.this).setMessage("请扫描轮胎芯片!").show();
return;
}
showLoadingDialog();
insert_inventory(epc, w, p, x, c, h, g, t);
});
binding.back.setOnClickListener(v -> {
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
});
}
private void showLoadingDialog() {
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("数据加载中...");
progressDialog.setCancelable(false);
progressDialog.show();
}
private void hideLoadingDialog() {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
@ -167,51 +185,11 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
runFlag = false;
super.onDestroy();
}
private void initView() {
listEPC = new ArrayList<EPC>();
}
/**
* Inventory EPC Thread
*/
class InventoryThread extends Thread {
private List<TagModel> tagList;
byte[] accessPassword = Tools.HexString2Bytes("00000000");
@Override
public void run() {
super.run();
while (runFlag) {
if (startFlag) {
tagList = manager.inventoryRealTime(); //实时盘存
if (tagList != null && !tagList.isEmpty()) {
//播放提示音
Util.play(1, 0);
for (TagModel tag : tagList) {
if (tag == null) {
String epcStr = "";
// String epcStr = new String(epc);
addToList(listEPC, epcStr, (byte) -1);
} else {
String epcStr = Tools.Bytes2HexString(tag.getmEpcBytes(), tag.getmEpcBytes().length);
// String epcStr = new String(epc);
byte rssi = tag.getmRssi();
addToList(listEPC, epcStr, rssi);
}
}
}
tagList = null;
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
long lastTime;
long nextTime;
// EPC add to LISTVIEW
private void addToList(final List<EPC> list, final String epc, final byte rssi) {
runOnUiThread(new Runnable() {
@ -226,7 +204,7 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
list.add(epcTag);
listepc.add(epc);
}else {
} else {
for (int i = 0; i < list.size(); i++) {
EPC mEPC = list.get(i);
// list contain this epc
@ -248,14 +226,14 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
}
// play sound
lastTime = SystemClock.elapsedRealtime();
lastTime = SystemClock.elapsedRealtime();
long time = lastTime - nextTime;
if (time >= 60) {
Util.play(1, 0);
nextTime = lastTime;
Log.e("TAG", "run: " + time);
}
if (listepc != null && !listepc.isEmpty()){
if (listepc != null && !listepc.isEmpty()) {
startFlag = false;
String currentEpc = listepc.get(0);
scan.setText(currentEpc);
@ -274,74 +252,80 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
// }
// clearData();
}
private void clearData() {
listEPC.removeAll(listEPC);
listepc.removeAll(listepc);
listEPC.clear();
listepc.clear();
}
// 基本信息查询
private void find(String epc) {
OkGo.<String>post(MyUrl.url + "/tyre/tyre/pdaQueryTyreInfo").tag(this)
.params("tyreEpc", epc)
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String body = response.body();
Log.e("body", body);
try {
Gson gson = new Gson();
BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class);
if (baseTyre != null) {
// 空值处理:若字段为 null 则显示空字符串
String tyreNo = safeGetString(baseTyre.getTyreNo());
wtbm.setText(tyreNo);
String brand = safeGetString(baseTyre.getTyreBrand());
String model = safeGetString(baseTyre.getTyreModel());
String level = safeGetString(baseTyre.getTyreLevel());
String pattern = safeGetString(baseTyre.getTyrePattern());
String kind = safeGetString(baseTyre.getTyreType());
pinpai.setText(brand);
xinghao.setText(model);
cengji.setText(level);
huawen.setText(pattern);
tyrekind.setText(kind);
@Override
public void onSuccess(Response<String> response) {
String body = response.body();
Log.e("body", body);
try {
Gson gson = new Gson();
BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class);
if (baseTyre != null) {
// 空值处理:若字段为 null 则显示空字符串
String tyreNo = safeGetString(baseTyre.getTyreNo());
wtbm.setText(tyreNo);
String brand = safeGetString(baseTyre.getTyreBrand());
String model = safeGetString(baseTyre.getTyreModel());
String level = safeGetString(baseTyre.getTyreLevel());
String pattern = safeGetString(baseTyre.getTyrePattern());
String kind = safeGetString(baseTyre.getTyreType());
pinpai.setText(brand);
xinghao.setText(model);
cengji.setText(level);
huawen.setText(pattern);
tyrekind.setText(kind);
}
} catch (JsonSyntaxException e) {
return;
}
}
} catch (JsonSyntaxException e) {
return;
}
}
});
});
}
private String safeGetString(String value) {
return value == null || "null".equals(value) ? "" : value;
}
//添加到库存表
private void insert_inventory(String epc,String wtbm,String pinpai,String xinghao,String cengji,String huawen,String grooves,String tyrekind) {
// 添加到库存表
private void insert_inventory(String epc, String wtbm, String pinpai, String xinghao, String cengji, String huawen, String grooves, String tyrekind) {
OkGo.<String>post(MyUrl.url + "/tyre/inventory/pdaAddInventory").tag(this)
.params("tyreRfid", epc)
.params("tyreEpc",epc)
.params("tyreOutsideId",wtbm)
.params("tyreBrand",pinpai)
.params("tyreModel",xinghao)
.params("tyreLevel",cengji)
.params("tyrePattern",huawen)
.params("grooves",grooves)
.params("tyreType",tyrekind)
.params("CreateBy",SharedPreferencesUtils.getstring("user","admin")).execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
hideLoadingDialog();
String body = response.body();
Gson gson = new Gson();
AjaxResult ajaxResult = gson.fromJson(body, AjaxResult.class);
handleResponse(ajaxResult);
}
@Override
public void onError(Response<String> response) {
hideLoadingDialog();
Toast.makeText(InStoreHouseActivity.this, "请求失败,请检查网络或重试", Toast.LENGTH_SHORT).show();
}
});
.params("tyreEpc", epc)
.params("tyreOutsideId", wtbm)
.params("tyreBrand", pinpai)
.params("tyreModel", xinghao)
.params("tyreLevel", cengji)
.params("tyrePattern", huawen)
.params("grooves", grooves)
.params("tyreType", tyrekind)
.params("CreateBy", SharedPreferencesUtils.getstring("user", "admin")).execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
hideLoadingDialog();
String body = response.body();
Gson gson = new Gson();
AjaxResult ajaxResult = gson.fromJson(body, AjaxResult.class);
handleResponse(ajaxResult);
}
@Override
public void onError(Response<String> response) {
hideLoadingDialog();
Toast.makeText(InStoreHouseActivity.this, "请求失败,请检查网络或重试", Toast.LENGTH_SHORT).show();
}
});
}
private void handleResponse(AjaxResult result) {
switch (result.getCode()) {
case "500":
@ -352,103 +336,35 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
break;
}
}
@OnClick({R.id.button, R.id.back})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.button:
// int len=wtbm.getText().toString().length();
// if (len != 11){
// new CommonDialog(InStoreHouseActivity.this).setMessage("胎号填写错误").show();
// }else {
// Log.e("aaaaa",epc.substring(4)+wtbm.getText().toString()+tyrekind.getText().toString());
String epc=scan.getText().toString();
String w=wtbm.getText().toString();
// String zb=zbh.getText().toString();
String p = pinpai.getText().toString();
String x=xinghao.getText().toString();
String c=cengji.getText().toString();
String h=huawen.getText().toString();
String t=tyrekind.getText().toString();
String g=gcts.getText().toString();
if (scan.getText().toString()==""){
new CommonDialog(InStoreHouseActivity.this).setMessage("请扫描轮胎芯片!").show();
return;
}
showLoadingDialog();
insert_inventory(epc,w,p,x,c,h,g,t);
// }
break;
case R.id.back:
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
break;
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()){
int id1 = parent.getId();
// case R.id.spinner:
// czy.setText(parent.getItemAtPosition(position).toString());
// break;
case R.id.spinnerkind:
tyrekind.setText(parent.getItemAtPosition(position).toString());
break;
case R.id.spinnerpattern:
huawen.setText(parent.getItemAtPosition(position).toString());
break;
case R.id.spinnerlevel:
cengji.setText(parent.getItemAtPosition(position).toString());
break;
case R.id.spinnerSize:
xinghao.setText(parent.getItemAtPosition(position).toString());
break;
case R.id.spinnerBrand:
pinpai.setText(parent.getItemAtPosition(position).toString());
break;
case R.id.spinnergcts:
gcts.setText(parent.getItemAtPosition(position).toString());
break;
if (id1 == R.id.spinnerkind) {
tyrekind.setText(parent.getItemAtPosition(position).toString());
} else if (id1 == R.id.spinnerpattern) {
huawen.setText(parent.getItemAtPosition(position).toString());
} else if (id1 == R.id.spinnerlevel) {
cengji.setText(parent.getItemAtPosition(position).toString());
} else if (id1 == R.id.spinnerSize) {
xinghao.setText(parent.getItemAtPosition(position).toString());
} else if (id1 == R.id.spinnerBrand) {
pinpai.setText(parent.getItemAtPosition(position).toString());
} else if (id1 == R.id.spinnergcts) {
gcts.setText(parent.getItemAtPosition(position).toString());
}
}
private Toast mToast;
private Toast toast;
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
private class KeyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int keyCode = intent.getIntExtra("keyCode", 0);
if (keyCode == 0) {
keyCode = intent.getIntExtra("keycode", 0);
}
boolean keyDown = intent.getBooleanExtra("keydown", false);
if (keyDown) {
if (toast == null) {
// toast = Toast.makeText(InStoreHouseActivity.this, "KeyReceiver:keyCode = down" + keyCode, Toast.LENGTH_SHORT);
} else {
// toast.setText("KeyReceiver:keyCode = down" + keyCode);
}
// toast.show();
switch (keyCode) {
case KeyEvent.KEYCODE_F1:
case KeyEvent.KEYCODE_F2:
case KeyEvent.KEYCODE_F3:
case KeyEvent.KEYCODE_F4:
case KeyEvent.KEYCODE_F5:
//扫描
startFlag = true;
break;
}
}
}
}
private void check_spinner() {
OkGo.<String>post(MyUrl.url + "/system/dict/data/tyreTypeList").execute(new StringCallback() {
@Override
@ -456,20 +372,26 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
hideLoadingDialog();
String body = response.body();
Gson gson = new Gson();
InStoreSpinnerVo inStoreSpinnerVo=new InStoreSpinnerVo();
inStoreSpinnerVo = gson.fromJson(body,InStoreSpinnerVo.class);
List<String> stringList=inStoreSpinnerVo.getKindList();
List<String> patternList=inStoreSpinnerVo.getPatternList();
List<String> patternLevel=inStoreSpinnerVo.getLevelList();
List<String> patternSize=inStoreSpinnerVo.getTyreSizeList();
List<String> patternBrand=inStoreSpinnerVo.getTyreBrandList();
List<String> patternGcts=inStoreSpinnerVo.getGctsList();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, stringList);
ArrayAdapter<String> arrayAdapterPattern = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternList);
ArrayAdapter<String> arrayAdapterLevel = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternLevel);
ArrayAdapter<String> arrayAdapterSize = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternSize);
ArrayAdapter<String> arrayAdapterBrand = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternBrand);
ArrayAdapter<String> arrayAdapterGcts = new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternGcts);
InStoreSpinnerVo inStoreSpinnerVo = new InStoreSpinnerVo();
inStoreSpinnerVo = gson.fromJson(body, InStoreSpinnerVo.class);
List<String> stringList = inStoreSpinnerVo.getKindList();
List<String> patternList = inStoreSpinnerVo.getPatternList();
List<String> patternLevel = inStoreSpinnerVo.getLevelList();
List<String> patternSize = inStoreSpinnerVo.getTyreSizeList();
List<String> patternBrand = inStoreSpinnerVo.getTyreBrandList();
List<String> patternGcts = inStoreSpinnerVo.getGctsList();
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, stringList);
ArrayAdapter<String> arrayAdapterPattern =
new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternList);
ArrayAdapter<String> arrayAdapterLevel =
new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternLevel);
ArrayAdapter<String> arrayAdapterSize =
new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternSize);
ArrayAdapter<String> arrayAdapterBrand =
new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternBrand);
ArrayAdapter<String> arrayAdapterGcts =
new ArrayAdapter<>(InStoreHouseActivity.this, android.R.layout.simple_list_item_1, patternGcts);
spinnerkind.setAdapter(arrayAdapter);
spinnerpattern.setAdapter(arrayAdapterPattern);
spinnerlevel.setAdapter(arrayAdapterLevel);
@ -539,7 +461,7 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
}
});
}
private KeyReceiver keyReceiver;
private void registerReceiver() {
keyReceiver = new KeyReceiver();
IntentFilter filter = new IntentFilter();
@ -547,7 +469,83 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi
filter.addAction("android.intent.action.FUN_KEY");
registerReceiver(keyReceiver, filter);
}
private void unregisterReceiver() {
unregisterReceiver(keyReceiver);
}
/**
* Inventory EPC Thread
*/
class InventoryThread extends Thread {
byte[] accessPassword = Tools.HexString2Bytes("00000000");
private List<TagModel> tagList;
@Override
public void run() {
super.run();
while (runFlag) {
if (startFlag) {
tagList = manager.inventoryRealTime(); // 实时盘存
if (tagList != null && !tagList.isEmpty()) {
// 播放提示音
Util.play(1, 0);
for (TagModel tag : tagList) {
if (tag == null) {
String epcStr = "";
// String epcStr = new String(epc);
addToList(listEPC, epcStr, (byte) -1);
} else {
String epcStr =
Tools.Bytes2HexString(tag.getmEpcBytes(), tag.getmEpcBytes().length);
// String epcStr = new String(epc);
byte rssi = tag.getmRssi();
addToList(listEPC, epcStr, rssi);
}
}
}
tagList = null;
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
private class KeyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int keyCode = intent.getIntExtra("keyCode", 0);
if (keyCode == 0) {
keyCode = intent.getIntExtra("keycode", 0);
}
boolean keyDown = intent.getBooleanExtra("keydown", false);
if (keyDown) {
if (toast == null) {
// toast = Toast.makeText(InStoreHouseActivity.this, "KeyReceiver:keyCode = down" + keyCode, Toast.LENGTH_SHORT);
} else {
// toast.setText("KeyReceiver:keyCode = down" + keyCode);
}
// toast.show();
switch (keyCode) {
case KeyEvent.KEYCODE_F1:
case KeyEvent.KEYCODE_F2:
case KeyEvent.KEYCODE_F3:
case KeyEvent.KEYCODE_F4:
case KeyEvent.KEYCODE_F5:
// 扫描
startFlag = true;
break;
}
}
}
}
}

@ -20,6 +20,7 @@ import android.os.Bundle;
import android.os.Environment;
import android.os.Process;
import android.util.Log;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
@ -46,20 +47,16 @@ import org.json.JSONObject;
import java.io.File;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
@BindView(R.id.login_name)
private ActivityMainBinding binding;
EditText loginName;
@BindView(R.id.login_pass)
EditText loginPass;
@BindView(R.id.login_log)
Button loginLog;
@BindView(R.id.checkbox_remember)
CheckBox cbRemember;
@BindView(R.id.version)
TextView version;
// 声明进度条变量
private ProgressDialog progressDialog;
@ -74,15 +71,38 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
// --- 新增:页面加载时读取保存的账号密码 ---
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
initRememberInfo();
// 2. 检查权限并开始检查更新
//showLoadingDialog();
//checkPermissionsAndUpdate();
// 注册下载完成广播接收器
//registerReceiver(onDownloadComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
checkPermissionsAndUpdate();
// 隐藏状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
private void bindViews() {
loginName = binding.loginName;
loginPass = binding.loginPass;
loginLog = binding.loginLog;
cbRemember = binding.checkboxRemember;
version = binding.version;
}
private void setupClickListeners() {
binding.loginLog.setOnClickListener(v -> {
String name = loginName.getText().toString().trim();
String pass = loginPass.getText().toString().trim();
boolean isRemember = cbRemember.isChecked();
if (name.isEmpty() || pass.isEmpty()) {
Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
showLoadingDialog();
login(name, pass, isRemember);
});
}
/**
*
@ -122,26 +142,6 @@ public class MainActivity extends AppCompatActivity {
}
}
@OnClick(R.id.login_log)
public void onViewClicked() {
// 获取输入内容
String name = loginName.getText().toString().trim();
String pass = loginPass.getText().toString().trim();
// --- 修改在点击登录时立即获取CheckBox状态 ---
// 注意:这里直接用 cbRemember.isChecked(),不要等到网络请求回来再判断
boolean isRemember = cbRemember.isChecked();
// 简单的非空校验
if (name.isEmpty() || pass.isEmpty()) {
Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
showLoadingDialog();
login(name, pass, isRemember); // 将状态传递给 login 方法
}
/**
*
*/

@ -42,32 +42,21 @@ import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivityOutStoreHouseBinding;
public class OutStoreHouseActivity extends AppCompatActivity {
@BindView(R.id.epc)
private ActivityOutStoreHouseBinding binding;
TextView scan;
@BindView(R.id.pinpai)
TextView pinpai;
@BindView(R.id.xinghao)
TextView xinghao;
@BindView(R.id.cengji)
TextView cengji;
@BindView(R.id.huawen)
TextView huawen;
@BindView(R.id.button)
Button button;
@BindView(R.id.wtbm)
TextView wtbm;
// @BindView(R.id.zbh)
// TextView zbh;
@BindView(R.id.back)
Button back;
@BindView(R.id.ltlb)
TextView ltlb;
private boolean isStart = true;
private ProgressDialog progressDialog;
@ -84,8 +73,10 @@ public class OutStoreHouseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_out_store_house);
ButterKnife.bind(this);
binding = ActivityOutStoreHouseBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
manager = MyApplication.getManager();
listEPC = new ArrayList<EPC>();
Thread thread = new InventoryThread();
@ -93,6 +84,30 @@ public class OutStoreHouseActivity extends AppCompatActivity {
Util.initSoundPool(this);
}
private void bindViews() {
scan = binding.epc;
pinpai = binding.pinpai;
xinghao = binding.xinghao;
cengji = binding.cengji;
huawen = binding.huawen;
button = binding.button;
wtbm = binding.wtbm;
back = binding.back;
ltlb = binding.ltlb;
}
private void setupClickListeners() {
binding.button.setOnClickListener(v -> {
showLoadingDialog();
out_inventory(scan.getText().toString(),SharedPreferencesUtils.getstring("user","admin"));
});
binding.back.setOnClickListener(v -> {
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
});
}
@Override
public void onResume() {
@ -262,7 +277,6 @@ public class OutStoreHouseActivity extends AppCompatActivity {
private String safeGetString(String value) {
return value == null || "null".equals(value) ? "" : value;
}
//轮胎出库
private void out_inventory(String epc,String createBy) {
OkGo.<String>post(MyUrl.url + "/tyre/inventory/pdaOutInventory").tag(this)
.params("tyreRfid", epc)
@ -279,22 +293,6 @@ public class OutStoreHouseActivity extends AppCompatActivity {
});
}
@OnClick({R.id.button, R.id.back})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.button:
// Log.e("aaaaa",epc.substring(4)+wtbm.getText().toString());
showLoadingDialog();
out_inventory(scan.getText().toString(),SharedPreferencesUtils.getstring("user","admin"));
break;
case R.id.back:
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
break;
}
}
private class KeyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

@ -33,35 +33,24 @@ import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivitySwitchBinding;
public class SwitchActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
@BindView(R.id.epc)
private ActivitySwitchBinding binding;
TextView epc1;
@BindView(R.id.car1)
TextView car1;
@BindView(R.id.lw1)
TextView lw1;
@BindView(R.id.epc2)
TextView epc2;
@BindView(R.id.car)
TextView car;
@BindView(R.id.lw2)
TextView lw2;
@BindView(R.id.ok)
Button ok;
@BindView(R.id.back)
Button back;
@BindView(R.id.wth1)
TextView wth1;
@BindView(R.id.linearLayout5)
LinearLayout linearLayout5;
@BindView(R.id.wth2)
TextView wth2;
@BindView(R.id.lc)
EditText lc;
// @BindView(R.id.czr)
// TextView czr;
@ -83,16 +72,66 @@ public class SwitchActivity extends AppCompatActivity implements AdapterView.OnI
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_switch);
ButterKnife.bind(this);
binding = ActivitySwitchBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
myHandler = new MyHandler(this);
// spinner.setOnItemSelectedListener(this);
upTyre = new UpTyre();
changeTyre = new ChangeTyre();
list_change = new ArrayList<>();
PlayMusic.init(this);
}
private void bindViews() {
epc1 = binding.epc;
car1 = binding.car1;
lw1 = binding.lw1;
epc2 = binding.epc2;
car = binding.car;
lw2 = binding.lw2;
ok = binding.ok;
back = binding.back;
wth1 = binding.wth1;
linearLayout5 = binding.linearLayout5;
wth2 = binding.wth2;
lc = binding.lc;
}
private void setupClickListeners() {
binding.ok.setOnClickListener(v -> {
changeTyre.setCarnumber(car.getText().toString());
changeTyre.setTyreEPCOne(epc1.getText().toString());
changeTyre.setTyreEPCTwo(epc2.getText().toString());
changeTyre.setSiteNoOneOld(lw1.getText().toString());
changeTyre.setSiteNoOneNow(lw2.getText().toString());
changeTyre.setSiteNoTwoOld(lw2.getText().toString());
changeTyre.setSiteNoTwoNow(lw1.getText().toString());
list_change.add(changeTyre);
String json = gson.toJson(list_change);
Log.e("json", json + wth1.getText().toString() + wth2.getText().toString() + userID);
if (epc1.getText().toString().equals(epc2.getText().toString())){
new CommonDialog(SwitchActivity.this).setMessage("轮胎EPC一样").show();
}
else if (!car.getText().toString().equals(car1.getText().toString()))
{
new CommonDialog(SwitchActivity.this).setMessage("车牌号不一样").show();
}
else if (lc.getText().toString().isEmpty()){
new CommonDialog(SwitchActivity.this).setMessage("换位里程不能为空").show();
}
else {
change(json, wth1.getText().toString(), wth2.getText().toString(), userID,lc.getText().toString());
}
list_change.clear();
});
binding.back.setOnClickListener(v -> {
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
});
}
@Override
public void onResume() {
super.onResume();
@ -159,42 +198,6 @@ public class SwitchActivity extends AppCompatActivity implements AdapterView.OnI
public void onNothingSelected(AdapterView<?> parent) {
}
@OnClick({R.id.ok, R.id.back})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.ok:
changeTyre.setCarnumber(car.getText().toString());
changeTyre.setTyreEPCOne(epc1.getText().toString());
changeTyre.setTyreEPCTwo(epc2.getText().toString());
changeTyre.setSiteNoOneOld(lw1.getText().toString());
changeTyre.setSiteNoOneNow(lw2.getText().toString());
changeTyre.setSiteNoTwoOld(lw2.getText().toString());
changeTyre.setSiteNoTwoNow(lw1.getText().toString());
list_change.add(changeTyre);
String json = gson.toJson(list_change);
Log.e("json", json + wth1.getText().toString() + wth2.getText().toString() + userID);
if (epc1.getText().toString().equals(epc2.getText().toString())){
new CommonDialog(SwitchActivity.this).setMessage("轮胎EPC一样").show();
}
else if (!car.getText().toString().equals(car1.getText().toString()))
{
new CommonDialog(SwitchActivity.this).setMessage("车牌号不一样").show();
}
else if (lc.getText().toString().isEmpty()){
new CommonDialog(SwitchActivity.this).setMessage("换位里程不能为空").show();
}
else {
change(json, wth1.getText().toString(), wth2.getText().toString(), userID,lc.getText().toString());
}
list_change.clear();
break;
case R.id.back:
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
break;
}
}
class MyHandler extends Handler {
WeakReference weakReference;

@ -49,27 +49,19 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivityTestBinding;
public class TestActivity extends AppCompatActivity {
@BindView(R.id.button)
private ActivityTestBinding binding;
Button back;
@BindView(R.id.dept)
EditText deptName;
@BindView(R.id.searchButton)
Button search;
@BindView(R.id.in_santext)
TextView in_santext;
@BindView(R.id.pinpai)
TextView carNo;
@BindView(R.id.carLine)
TextView line;
@BindView(R.id.carType)
TextView type;
@BindView(R.id.confirm_button)
Button confirm;
private boolean isStart = true;
private ProgressDialog progressDialog;
@ -89,8 +81,10 @@ public class TestActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ButterKnife.bind(this);
binding = ActivityTestBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
manager = MyApplication.getManager();
listEPC = new ArrayList<EPC>();
Thread thread = new InventoryThread();
@ -99,6 +93,40 @@ public class TestActivity extends AppCompatActivity {
Util.initSoundPool(this);
}
private void bindViews() {
back = binding.button;
deptName = binding.dept;
search = binding.searchButton;
in_santext = binding.inSantext;
carNo = binding.pinpai;
line = binding.carLine;
type = binding.carType;
confirm = binding.confirmButton;
}
private void setupClickListeners() {
binding.button.setOnClickListener(v -> {
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
});
binding.searchButton.setOnClickListener(v -> {
String carTeam = deptName.getText().toString();
if (carTeam == null || carTeam.isEmpty())
{
new CommonDialog(TestActivity.this).setMessage("请输入车队名称!").show();
return;
}
showLoadingDialog();
car_team(carTeam);
});
binding.confirmButton.setOnClickListener(v -> {
showLoadingDialog();
carBangding();
});
}
@Override
protected void onResume() {
super.onResume();
@ -134,33 +162,6 @@ public class TestActivity extends AppCompatActivity {
runFlag = false;
super.onDestroy();
}
@OnClick({R.id.button,R.id.searchButton,R.id.confirm_button})
public void onViewClicked(View view) {
Intent intent = new Intent(this,MainActivity.class);
String carTeam = deptName.getText().toString();
switch (view.getId()) {
case R.id.button:
intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
break;
case R.id.searchButton:
if (carTeam == null || carTeam.isEmpty())
{
new CommonDialog(TestActivity.this).setMessage("请输入车队名称!").show();
return;
}
showLoadingDialog();
car_team(carTeam);
break;
case R.id.confirm_button:
//执行绑定请求后台
showLoadingDialog();
carBangding();
break;
}
}
//绑定车牌与RFID信息
private void carBangding() {
OkGo.<String>post(MyUrl.url + "/tyre/car/PdaBingCarRfid")
.tag(this).params("rfid", in_santext.getText().toString())

@ -43,22 +43,15 @@ import com.lzy.okgo.model.Response;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivityTyreLayoutBinding;
public class TyreLayoutActivity extends AppCompatActivity {
// 1. 使用 @BindView 绑定控件
// 注意:变量名可以自定义,但 ID 必须对应 XML 中的 id
@BindView(R.id.et_plate_number)
private ActivityTyreLayoutBinding binding;
TextInputEditText etPlateNumber;
@BindView(R.id.btn_retrieve)
Button btnRetrieve; // 因为使用的是 MaterialButton这里类型要对应
@BindView(R.id.til_plate_number)
Button btnRetrieve;
TextInputLayout tilPlateNumber;
private ProgressDialog progressDialog;
@ -94,14 +87,16 @@ public class TyreLayoutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tyre_layout);
ButterKnife.bind(this);
binding = ActivityTyreLayoutBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
manager = MyApplication.getManager();
listEPC = new ArrayList<EPC>();
Thread thread = new InventoryThread();
thread.start();
Util.initSoundPool(this);
tilPlateNumber = findViewById(R.id.til_plate_number);
tilPlateNumber = binding.tilPlateNumber;
etPlateNumber.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@ -111,18 +106,12 @@ public class TyreLayoutActivity extends AppCompatActivity {
@Override
public void afterTextChanged(Editable s) {
// 核心代码:只要用户输入了内容,就清除错误提示
tilPlateNumber.setError(null);
// 可选:如果你使用了 errorEnabled="true",可能还需要调用下面这行来彻底清除空间占用
// tilPlateNumber.setErrorEnabled(false);
}
});
tilPlateNumber.setEndIconOnClickListener(v -> {
// 在这里处理搜索逻辑
String plateNumber = etPlateNumber.getText().toString().trim();
if (!plateNumber.isEmpty()) {
// 执行搜索
showLoadingDialog();
performSearch(plateNumber);
} else {
@ -130,6 +119,24 @@ public class TyreLayoutActivity extends AppCompatActivity {
}
});
}
private void bindViews() {
etPlateNumber = binding.etPlateNumber;
btnRetrieve = binding.btnRetrieve;
tilPlateNumber = binding.tilPlateNumber;
}
private void setupClickListeners() {
binding.btnRetrieve.setOnClickListener(v -> {
String PlateNumber = etPlateNumber.getText().toString();
if (PlateNumber == null || PlateNumber.isEmpty())
{
new CommonDialog(TyreLayoutActivity.this).setMessage("请输入车牌号!").show();
return;
}
carBangding(PlateNumber);
});
}
@Override
public void onResume() {
super.onResume();
@ -187,21 +194,6 @@ public class TyreLayoutActivity extends AppCompatActivity {
});
dialog.show();
}
@OnClick({R.id.btn_retrieve})
public void onViewClicked(View view) {
String PlateNumber = etPlateNumber.getText().toString();
switch (view.getId()) {
case R.id.btn_retrieve:
if (PlateNumber == null || PlateNumber.isEmpty())
{
new CommonDialog(TyreLayoutActivity.this).setMessage("请输入车牌号!").show();
return;
}
carBangding(PlateNumber);
break;
}
}
//绑定车牌与RFID信息
private void carBangding(String PlateNumber) {
OkGo.<String>post(MyUrl.url + "/tyre/tyre/getCarBingTire")
.tag(this).params("carNo", PlateNumber)

@ -3,45 +3,46 @@ package com.example.tyre;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import com.example.tyre.databinding.ActivityTyreLoadUnLoadBinding;
public class TyreLoadUnLoadActivity extends AppCompatActivity {
@BindView(R.id.up)
private ActivityTyreLoadUnLoadBinding binding;
RadioButton up;
@BindView(R.id.down)
RadioButton down;
@BindView(R.id.back)
Button back;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tyre_load_un_load);
ButterKnife.bind(this);
binding = ActivityTyreLoadUnLoadBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
}
@OnClick({R.id.up, R.id.down,R.id.back})
public void onViewClicked(View view) {
Intent intent = null;
switch (view.getId()) {
case R.id.up:
intent = new Intent(this, UpActivity.class);
break;
case R.id.down:
intent = new Intent(this, DownActivity.class);
break;
case R.id.back:
intent = new Intent(this, HomePageActivity.class);
break;
}
startActivity(intent);
private void bindViews() {
up = binding.up;
down = binding.down;
}
private void setupClickListeners() {
binding.up.setOnClickListener(v -> {
Intent intent = new Intent(this, UpActivity.class);
startActivity(intent);
});
binding.down.setOnClickListener(v -> {
Intent intent = new Intent(this, DownActivity.class);
startActivity(intent);
});
binding.back.setOnClickListener(v -> {
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
});
}
}

@ -35,89 +35,81 @@ import com.google.gson.JsonSyntaxException;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response;
//import com.seuic.scanner.ScannerKey;
//import com.seuic.uhf.EPC;
//import com.seuic.uhf.UHFService;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivityTyresearchBinding;
/**
* Created by on 2019/12/3.
*/
public class TyreSearchActivity extends AppCompatActivity {
private ActivityTyresearchBinding binding;
public class TyreSearchActivity extends AppCompatActivity implements View.OnClickListener{
@BindView(R.id.in_santext)
TextView inSantext;
@BindView(R.id.basemessage)
Button basemessage;
@BindView(R.id.button)
Button button;
@BindView(R.id.pinpai)
TextView pinpai;
@BindView(R.id.xinghao)
TextView xinghao;
@BindView(R.id.cengji)
TextView cengji;
@BindView(R.id.huawen)
TextView huawen;
private int power = 0;//rate of work
private int power = 0;
private int area = 0;
private SharedPreferences shared;
private TextView textVersion;
private Button buttonStart;
private Button buttonBack;
private boolean runFlag = true;
private boolean startFlag = false;
private UhfReader manager; // UHF manager,UHF Operating handle
private UhfReader manager;
private ArrayList<EPC> listEPC;
private ArrayList<String> listepc = new ArrayList<String>();
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tyresearch);
binding = ActivityTyresearchBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
manager = MyApplication.getManager();
initView();
//start inventory thread
Thread thread = new InventoryThread();
thread.start();
// init sound pool
com.example.tyre.util.Util.initSoundPool(this);
Log.e("onCreate", "onCreate:+ " );
}
@Override
public void onClick(View v) {
byte[] accessPassword = Tools.HexString2Bytes("00000000");
List<TagModel> tagList;
// addr = Integer.valueOf(editAddr.getText().toString());
// length = Integer.valueOf(editLength.getText().toString());
switch (v.getId()) {
case R.id.scan_button:
if (!startFlag) {
startFlag = true;
buttonStart.setText("停 止");
} else {
startFlag = false;
buttonStart.setText("扫 描");
}
break;
case R.id.button:
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
break;
}
private void bindViews() {
inSantext = binding.inSantext;
basemessage = binding.basemessage;
button = binding.button;
pinpai = binding.pinpai;
xinghao = binding.xinghao;
cengji = binding.cengji;
huawen = binding.huawen;
}
private void setupClickListeners() {
binding.scanButton.setOnClickListener(v -> {
if (!startFlag) {
startFlag = true;
binding.scanButton.setText("停 止");
} else {
startFlag = false;
binding.scanButton.setText("扫 描");
}
});
binding.button.setOnClickListener(v -> {
// Intent intent = new Intent(this, HomePageActivity.class);
// startActivity(intent);
finish();
});
}
@Override
public void onResume() {
super.onResume();
@ -133,7 +125,7 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
@Override
public void onPause() {
startFlag = false;
buttonStart.setText("扫 描");
binding.scanButton.setText("扫描");
// manager.close();
unregisterReceiver();
Log.e("onPause", "onPause:+ " );
@ -144,39 +136,26 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
protected void onDestroy() {
startFlag = false;
runFlag = false;
// if (manager != null) {
// manager.close();
// manager = null; // 重置manager引用
// }
Log.e("onDestroy", "onDestroy:+ " );
super.onDestroy();
}
private void initView() {
textVersion = (TextView) findViewById(R.id.in_santext);
buttonStart = (Button) findViewById(R.id.scan_button);
buttonBack =(Button) findViewById(R.id.button);
pinpai = (TextView) findViewById(R.id.pinpai);
xinghao = (TextView) findViewById(R.id.xinghao);
cengji = (TextView) findViewById(R.id.cengji);
huawen = (TextView) findViewById(R.id.huawen);
buttonStart.setOnClickListener(this);
buttonBack.setOnClickListener(this);
textVersion = binding.inSantext;
pinpai = binding.pinpai;
xinghao = binding.xinghao;
cengji = binding.cengji;
huawen = binding.huawen;
listEPC = new ArrayList<EPC>();
}
private long exitTime = 0;
/**
* show Toast
*/
private Toast mToast;
private Toast toast;
/**
* Inventory EPC Thread
*/
class InventoryThread extends Thread {
private List<TagModel> tagList;
byte[] accessPassword = Tools.HexString2Bytes("00000000");
@ -185,18 +164,15 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
super.run();
while (runFlag) {
if (startFlag) {
tagList = manager.inventoryRealTime(); //实时盘存
tagList = manager.inventoryRealTime();
if (tagList != null && !tagList.isEmpty()) {
//播放提示音
Util.play(1, 0);
for (TagModel tag : tagList) {
if (tag == null) {
String epcStr = "";
// String epcStr = new String(epc);
addToList(listEPC, epcStr, (byte) -1);
} else {
String epcStr = Tools.Bytes2HexString(tag.getmEpcBytes(), tag.getmEpcBytes().length);
// String epcStr = new String(epc);
byte rssi = tag.getmRssi();
addToList(listEPC, epcStr, rssi);
}
@ -207,19 +183,16 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
// EPC add to LISTVIEW
private void addToList(final List<EPC> list, final String epc, final byte rssi) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// The epc for the first time
if (list.isEmpty()) {
EPC epcTag = new EPC();
epcTag.setEpc(epc);
@ -231,14 +204,12 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
}else {
for (int i = 0; i < list.size(); i++) {
EPC mEPC = list.get(i);
// list contain this epc
if (epc.equals(mEPC.getEpc())) {
mEPC.setCount(mEPC.getCount() + 1);
mEPC.setRssi(rssi);
list.set(i, mEPC);
break;
} else if (i == (list.size() - 1)) {
// list doesn't contain this epc
EPC newEPC = new EPC();
newEPC.setEpc(epc);
newEPC.setCount(1);
@ -249,7 +220,6 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
}
}
// play sound
lastTime = SystemClock.elapsedRealtime();
long time = lastTime - nextTime;
if (time >= 60) {
@ -262,16 +232,14 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
Log.e("EPC", "listepc:+ " + listepc);
if (listepc != null && !listepc.isEmpty()){
startFlag = false;
buttonStart.setText("扫 描");
binding.scanButton.setText("扫 描");
textVersion.setText(listepc.get(0).toString());
//请求后台
find(listepc.get(0).toString());
}
clearData();
}
long lastTime;
long nextTime;
// Make the button clickable or unclickable
private void setButtonClickable(Button button, boolean flag) {
button.setClickable(flag);
if (flag) {
@ -320,39 +288,31 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
boolean keyDown = intent.getBooleanExtra("keydown", false);
if (keyDown) {
if (toast == null) {
// toast = Toast.makeText(TyreSearchActivity.this, "KeyReceiver:keyCode = down" + keyCode, Toast.LENGTH_SHORT);
} else {
// toast.setText("KeyReceiver:keyCode = down" + keyCode);
}
//toast.show();
switch (keyCode) {
case KeyEvent.KEYCODE_F1:
case KeyEvent.KEYCODE_F2:
case KeyEvent.KEYCODE_F3:
case KeyEvent.KEYCODE_F4:
case KeyEvent.KEYCODE_F5:
//触发扫描动作
onClick(buttonStart);
binding.scanButton.callOnClick();
break;
}
}
}
}
// 基本信息查询
private void find(String epc) {
//showLoadingDialog();
OkGo.<String>post(MyUrl.url + "/tyre/tyre/pdaQueryTyreInfo").tag(this)
.params("tyreEpc", epc)
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
// hideLoadingDialog();
String body = response.body();
try {
Gson gson = new Gson();
BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class);
if (baseTyre != null) {
// 空值处理:若字段为 null 则显示空字符串
String brand = safeGetString(baseTyre.getTyreBrand());
String model = safeGetString(baseTyre.getTyreModel());
String level = safeGetString(baseTyre.getTyreLevel());
@ -369,7 +329,6 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
huawen.setText("");
}
} catch (JsonSyntaxException e) {
// 处理 JSON 解析错误
pinpai.setText("");
xinghao.setText("");
cengji.setText("");
@ -382,4 +341,4 @@ public class TyreSearchActivity extends AppCompatActivity implements View.OnClic
private String safeGetString(String value) {
return value == null || "null".equals(value) ? "" : value;
}
}
}

@ -48,35 +48,22 @@ import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.pda.serialport.Tools;
import com.example.tyre.databinding.ActivityUpBinding;
public class UpActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
private ActivityUpBinding binding;
@BindView(R.id.epc)
TextView EPC;
@BindView(R.id.azlw)
TextView azlw;
@BindView(R.id.condition)
Spinner condition;
// @BindView(R.id.carAdapter)
// Spinner carAdapter;
@BindView(R.id.start)
EditText start;
@BindView(R.id.searchButton)
Button searchButton;
@BindView(R.id.ok)
Button ok;
@BindView(R.id.back)
Button back;
@BindView(R.id.th)
TextView th;
@BindView(R.id.zbh)
TextView zbh;
@BindView(R.id.car)
EditText car;
private boolean isStart = true;
private ProgressDialog progressDialog;
@ -95,20 +82,88 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_up);
ButterKnife.bind(this);
binding = ActivityUpBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
bindViews();
setupClickListeners();
manager = MyApplication.getManager();
listEPC = new ArrayList<EPC>();
condition.setOnItemSelectedListener(this);
showLoadingDialog();
check_spinner();
//car_spinner();
Thread thread = new InventoryThread();
thread.start();
Util.initSoundPool(this);
}
private void bindViews() {
EPC = binding.epc;
azlw = binding.azlw;
condition = binding.condition;
start = binding.start;
searchButton = binding.searchButton;
ok = binding.ok;
back = binding.back;
th = binding.th;
zbh = binding.zbh;
car = binding.car;
}
private void setupClickListeners() {
binding.ok.setOnClickListener(v -> {
String rfid=EPC.getText().toString();
String carNo = car.getText().toString();
String millage = start.getText().toString();
String wheel = azlw.getText().toString();
String selfNo = zbh.getText().toString();
if (rfid == null || rfid.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请扫描轮胎!").show();
return;
}
if (carNo == null || carNo.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请选择安装车辆!").show();
return;
}
if (millage == null || millage.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请输入起始里程!").show();
return;
}
if (wheel == null || wheel.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请选择安装轮位!").show();
return;
}
if (selfNo == null || selfNo.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请输入自编号!").show();
return;
}
up_insert(rfid,carNo,millage,wheel,selfNo);
showLoadingDialog();
});
binding.back.setOnClickListener(v -> {
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
});
binding.searchButton.setOnClickListener(v -> {
String carNo = car.getText().toString();
if (carNo == null || carNo.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请输入车牌号!").show();
return;
}
showLoadingDialog();
car_spinner(carNo);
});
}
@ -300,75 +355,15 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()){
case R.id.condition:
azlw.setText(parent.getItemAtPosition(position).toString());
break;
if (parent.getId() == R.id.condition) {
azlw.setText(parent.getItemAtPosition(position).toString());
}
}
// 添加缺失的方法
@Override
public void onNothingSelected(AdapterView<?> parent) {
// 当没有选项被选中时的处理逻辑
// 可以留空,但必须实现这个方法
}
@OnClick({R.id.ok, R.id.back,R.id.searchButton})
public void onViewClicked(View view) {
String rfid=EPC.getText().toString();
String carNo = car.getText().toString();
String millage = start.getText().toString();
String wheel = azlw.getText().toString();
String selfNo = zbh.getText().toString();
switch (view.getId()) {
case R.id.ok:
// String azlw =
if (rfid == null || rfid.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请扫描轮胎!").show();
return;
}
if (carNo == null || carNo.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请选择安装车辆!").show();
return;
}
if (millage == null || millage.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请输入起始里程!").show();
return;
}
if (wheel == null || wheel.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请选择安装轮位!").show();
return;
}
if (selfNo == null || selfNo.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请输入自编号!").show();
return;
}
up_insert(rfid,carNo,millage,wheel,selfNo);
showLoadingDialog();
break;
case R.id.back:
Intent intent = new Intent(this, HomePageActivity.class);
startActivity(intent);
break;
case R.id.searchButton:
if (carNo == null || carNo.isEmpty())
{
new CommonDialog(UpActivity.this).setMessage("请输入车牌号!").show();
return;
}
showLoadingDialog();
car_spinner(carNo);
break;
}
}
// 安装请求后台
private void up_insert(String rfid,String carNo,String millage,String wheel,String selfNo) {
OkGo.<String>post(MyUrl.url + "/tyre/install/PdaInstallTyre").tag(this)
.params("tyreRfid", rfid)

@ -0,0 +1,16 @@
package com.example.tyre.maintenance;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import java.text.Format;
import java.text.SimpleDateFormat;
public class BaseActivity extends AppCompatActivity {
public SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
public void onBackClick(View view) {
finish();
}
}

@ -0,0 +1,33 @@
package com.example.tyre.maintenance;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.example.tyre.R;
import com.example.tyre.maintenance.dialog.TipResultDialog;
public class CreateWorkOrderActivity extends BaseActivity {
TipResultDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DataBindingUtil.setContentView(this,R.layout.activity_create_work_order);
dialog = new TipResultDialog(this, this);
}
public void openSelectCarDialog(View view) {
}
public void generateWorkOrder(View view) {
dialog.show(true, "工单生成成功", true);
}
}

@ -0,0 +1,64 @@
package com.example.tyre.maintenance;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.databinding.DataBindingUtil;
import com.example.tyre.R;
import com.example.tyre.databinding.ActivityNewHomePageBinding;
public class NewHomePageActivity extends BaseActivity {
private ActivityNewHomePageBinding binding;
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_new_home_page);
intent = new Intent(this, WorkOrderActivity.class);
}
public void goActivity1(View view) {
intent.putExtra("title", "二级保养");
startActivity(intent);
}
public void goActivity2(View view) {
intent.putExtra("title", "小修");
startActivity(intent);
}
public void goActivity3(View view) {
intent.putExtra("title", "抢碎修");
startActivity(intent);
}
public void goActivity4(View view) {
intent.putExtra("title", "月检");
startActivity(intent);
}
public void goActivity5(View view) {
intent.putExtra("title", "拆报废车");
startActivity(intent);
}
public void goActivity6(View view) {
intent.putExtra("title", "轮胎修补");
startActivity(intent);
}
public void goActivity7(View view) {
intent.putExtra("title", "轮胎报废");
startActivity(intent);
}
public void goAllWorkOrder(View view) {
intent.putExtra("title", "总工单列表");
startActivity(intent);
}
}

@ -0,0 +1,74 @@
package com.example.tyre.maintenance;
import android.annotation.SuppressLint;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListPopupWindow;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableBoolean;
import com.example.tyre.R;
import com.example.tyre.databinding.ActivityWorkOrderBinding;
import java.util.Calendar;
public class WorkOrderActivity extends BaseActivity {
private ActivityWorkOrderBinding binding;
private ObservableBoolean status;
private DatePickerDialog datePickerDialog;
private ListPopupWindow listPopupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_work_order);
status = new ObservableBoolean(false);
binding.setStatus(status);
// 获取当前日期
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
binding.workOrderDate.setText(dateFormat.format(calendar.getTime()));
datePickerDialog = new DatePickerDialog(this,
(view1, year1, monthOfYear, dayOfMonth) -> {
@SuppressLint("DefaultLocale")
String selectedDate =
year1 + "-" + String.format("%02d", (monthOfYear + 1)) + "-" + String.format("%02d", dayOfMonth);
binding.workOrderDate.setText(selectedDate);
}, year, month, day);
// 初始化选择框
listPopupWindow = new ListPopupWindow(this);
listPopupWindow.setAnchorView(binding.workOrderSite);
String[] stringArray = getResources().getStringArray(R.array.zxzd);
listPopupWindow.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, stringArray));
listPopupWindow.setOnItemClickListener((parent, view, position, id) -> {
binding.workOrderSite.setText(stringArray[position]);
listPopupWindow.dismiss();`
});
}
// 选日期
public void selectDate(View view) {
datePickerDialog.show();
}
// 选站点
public void selectOrderSite(View view) {
listPopupWindow.show();
}
public void goCreateWorkOrder(View view) {
startActivity(new Intent(this, CreateWorkOrderActivity.class));
}
public void switchStatus(View view) {
status.set(!status.get());
}
}

@ -0,0 +1,105 @@
package com.example.tyre.maintenance.dialog;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import androidx.databinding.DataBindingUtil;
import com.example.tyre.R;
import com.example.tyre.databinding.DialogTipResultBinding;
/**
* 2+
*/
public class TipResultDialog extends Dialog {
private final DialogTipResultBinding binding;
private CountDownTimer countDownTimer;
private final Activity activity;
public TipResultDialog(Context context,Activity activity) {
super(context, R.style.MyMiddleDialogStyle);
this.activity = activity;
binding =DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialog_tip_result, null, false);
binding.dialogConfirm.setOnClickListener(view -> dismiss());
setContentView(binding.getRoot());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initDialogStyle();
startCountDown();
}
/**
*
*/
private void initDialogStyle() {
Window window = getWindow();
if (window != null) {
window.setGravity(Gravity.CENTER);
WindowManager.LayoutParams params = window.getAttributes();
params.width = (int) (getContext().getResources().getDisplayMetrics().widthPixels * 0.9);
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(params);
window.setBackgroundDrawableResource(android.R.color.transparent);
}
// 点击外部不关闭
setCanceledOnTouchOutside(false);
}
/**
* 2
*/
private void startCountDown() {
countDownTimer = new CountDownTimer(2000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dismiss();
activity.finish();
}
};
}
public void show(boolean state, String info, boolean closeType) {
super.show();
binding.dialogState.setVisibility(state ? View.VISIBLE : View.GONE);
binding.dialogTip.setText(info);
if (closeType) {
countDownTimer.start();
}
}
@Override
public void dismiss() {
super.dismiss();
if (countDownTimer != null) {
countDownTimer.cancel();
}
}
}

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#4B84FE"/>
<corners android:radius="10dp"/>
</shape>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp">
<shape>
<stroke
android:width="1dp"
android:color="#4B84FE" />
<corners android:radius="8dp" />
<solid android:color="@color/white" />
</shape>
</item>
<item
android:width="12dp"
android:height="8dp"
android:gravity="center|right"
android:right="16dp">
<bitmap android:src="@drawable/ic_png_sl" />
</item>
</layer-list>

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp">
<shape>
<corners android:radius="8dp" />
<solid android:color="#F7F8F9" />
</shape>
</item>
<item
android:width="12dp"
android:height="8dp"
android:gravity="center|right"
android:right="16dp">
<bitmap android:src="@drawable/ic_png_sl" />
</item>
</layer-list>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/buttonColor" />
<corners android:radius="8dp" />
</shape>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="12dp" />
<solid android:color="@color/white"/>
</shape>

@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white"
/>
<corners android:radius="20dp"/>
<solid android:color="@color/white" />
<corners android:radius="20dp" />
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="8dp"
android:viewportWidth="12"
android:viewportHeight="8">
<path
android:fillColor="#4B84FE"
android:pathData="M0,0 L12,0 L6,8 Z"/>
</vector>

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FF000000"
android:pathData="M558.3,756.5c-13.7,13.7 -32.2,26.4 -49.8,22.5 -17.6,2.9 -34.2,-10.7 -47.8,-22.5L38,331.8c-21.5,-21.5 -21.5,-56.6 0,-78.1s56.6,-21.5 78.1,0l393.4,404.2 394.4,-404.2c21.5,-21.5 56.6,-21.5 78.1,0s21.5,56.6 0,78.1L558.3,756.5z" />
</vector>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="20dp" />
<solid android:color="#ECF2FE"/>
</shape>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F4F6F9"/>
<corners android:radius="10dp"/>
</shape>

@ -220,7 +220,7 @@
android:layout_margin="8dp">
<Spinner
android:id="@+id/CheckTypeSpinner"
android:id="@+id/check_type_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
tools:context=".maintenance.CreateWorkOrderActivity">
<include
layout="@layout/layout_activity_title"
app:title='@{"发起新工单"}' />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:background="@drawable/card_bg"
android:orientation="vertical"
android:padding="12dp">
<TextView
style="@style/text_title_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:letterSpacing="0.1"
android:text="* 车牌" />
<TextView
android:layout_width="match_parent"
android:layout_height="45dp"
android:text="点击选择"
android:gravity="center|left"
android:letterSpacing="0.1"
android:paddingStart="12dp"
android:layout_marginTop="8dp"
android:background="@drawable/bg_select_blue"
android:onClick="openSelectCarDialog"
/>
<TextView
style="@style/text_title_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:letterSpacing="0.1"
android:text="* 工单类型" />
<Spinner
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginTop="8dp"
android:entries="@array/work_type"
android:background="@drawable/bg_select_grey"
android:paddingStart="12dp"/>
<TextView
style="@style/text_title_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:letterSpacing="0.1"
android:text="* 执行站点" />
<Spinner
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginTop="8dp"
android:paddingStart="12dp"
android:entries="@array/zxzd"
android:background="@drawable/bg_select_grey"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
<Button
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_margin="16dp"
android:background="@drawable/bg_button_blue"
android:letterSpacing="0.3"
android:text="生成工单"
android:textColor="@color/white"
android:textSize="18sp"
android:onClick="generateWorkOrder"
android:textStyle="bold" />
</LinearLayout>

@ -109,12 +109,11 @@
/>
<RadioButton
android:id="@+id/test2"
android:id="@+id/in_new_system"
style="@style/TabRadioButtonTwo"
android:textColor="@color/white"
android:drawableTop="@mipmap/test2"
android:text="安装查询"
android:visibility="invisible"
android:text="车队维保系统"
/>
<!-- <RadioButton-->
<!-- android:id="@+id/test3"-->

@ -1,128 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout 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:background="@color/xuebai"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@mipmap/bg"
android:gravity="center"
android:orientation="vertical"
android:paddingStart="20dp"
android:paddingEnd="20dp"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:src="@mipmap/tyre" />
<ImageView
android:layout_width="300dp"
android:layout_height="80dp"
android:src="@mipmap/title" />
<EditText
android:id="@+id/login_name"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg"/>
android:layout_height="wrap_content"
android:textSize="23sp" />
<androidx.constraintlayout.widget.ConstraintLayout
<EditText
android:id="@+id/login_pass"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:textSize="23sp"
android:inputType="textPassword"
android:layout_marginTop="12dp"/>
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="80dp"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="8dp"
android:src="@mipmap/tyre"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.492"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginStart="8dp"
android:layout_marginTop="100dp"
android:layout_marginEnd="8dp"
android:src="@mipmap/title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.492"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="380dp"
android:layout_marginTop="80dp"
android:layout_marginStart="18dp"
android:layout_marginEnd="18dp"
android:backgroundTint="@color/white"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="40dp"
android:orientation="horizontal">
<!--android:drawableRight="@mipmap/xia"-->
<EditText
android:id="@+id/login_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:paddingLeft="10dp"
android:ems="10"
android:layout_weight="3"
android:textSize="23sp"
/>
</LinearLayout>
<Button
android:id="@+id/login_log"
style="@style/buttonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="登 陆" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="30dp"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkbox_remember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住用户名和密码"
android:textSize="18sp"
android:layout_marginTop="12dp"
android:layout_gravity="left"/>
<EditText
android:id="@+id/login_pass"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:paddingLeft="10dp"
android:ems="10"
android:layout_weight="3"
android:textSize="23sp"
android:inputType="textPassword"
/>
</LinearLayout>
<Button
android:id="@+id/login_log"
style="@style/buttonStyle"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="30dp"
android:layout_marginRight="20dp"
android:text="登 陆" />
<!-- 新增:记住密码复选框 -->
<CheckBox
android:id="@+id/checkbox_remember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="15dp"
android:text="记住用户名和密码"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/login_log" />
</LinearLayout>
<TextView
android:id="@+id/version"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:textColor="@color/blue"
android:textSize="18sp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/version"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:gravity="center"
android:textColor="@color/blue"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent" />
</FrameLayout>
</LinearLayout>

@ -0,0 +1,155 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
<variable
name="text1"
type="String" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".maintenance.NewHomePageActivity">
<include
layout="@layout/layout_activity_title"
app:title='@{"车队维保系统"}' />
<TextView
style="@style/text_title_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="工单发起与处理" />
<androidx.gridlayout.widget.GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:background="@drawable/card_bg"
android:padding="12dp"
app:columnCount="4"
app:rowCount="2"
tools:ignore="MissingClass">
<!-- <include
layout="@layout/layout_home_icon"
app:layout_columnWeight="1"
app:text1='@{"⚙️"}'
app:text2='@{"二级保养"}' />-->
<RadioButton
style="@style/home_page_radio_button"
android:layout_height="wrap_content"
android:drawableTop="@mipmap/icon_1"
android:onClick="goActivity1"
android:text="二级保养"
app:layout_columnWeight="1" />
<RadioButton
style="@style/home_page_radio_button"
android:layout_height="wrap_content"
android:drawableTop="@mipmap/icon_2"
android:onClick="goActivity2"
android:text="小修"
app:layout_columnWeight="1" />
<RadioButton
style="@style/home_page_radio_button"
android:layout_height="wrap_content"
android:drawableTop="@mipmap/icon_3"
android:onClick="goActivity3"
android:text="抢碎修"
app:layout_columnWeight="1" />
<RadioButton
style="@style/home_page_radio_button"
android:layout_height="wrap_content"
android:drawableTop="@mipmap/icon_4"
android:onClick="goActivity4"
android:text="月检"
app:layout_columnWeight="1" />
<RadioButton
style="@style/home_page_radio_button"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:drawableTop="@mipmap/icon_5"
android:onClick="goActivity5"
android:text="拆报废车"
app:layout_columnWeight="1" />
<RadioButton
style="@style/home_page_radio_button"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:drawableTop="@mipmap/icon_6"
android:onClick="goActivity6"
android:text="轮胎修补"
app:layout_columnWeight="1" />
<RadioButton
style="@style/home_page_radio_button"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:drawableTop="@mipmap/icon_7"
android:onClick="goActivity7"
android:text="轮胎报废"
app:layout_columnWeight="1" />
</androidx.gridlayout.widget.GridLayout>
<TextView
style="@style/text_title_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="全局中心" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:background="@drawable/card_bg"
android:padding="12dp">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@mipmap/icon_8" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:onClick="goAllWorkOrder"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:text="总工单列表"
android:textColor="@color/textColor1"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:text="查看车队所有已建工单"
android:textColor="@color/textColor2"
android:textSize="12sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</layout>

@ -317,7 +317,8 @@
android:layout_weight="1"
android:layout_margin="18dp"
style="@style/buttonStyle"
android:text="扫 描" />
android:letterSpacing="1"
android:text="扫描" />
<Button
android:id="@+id/button"
android:layout_width="0dp"
@ -325,7 +326,8 @@
android:layout_weight="1"
android:layout_margin="18dp"
style="@style/buttonStyle"
android:text="返 回" />
android:letterSpacing="1"
android:text="返回" />
</LinearLayout>
</LinearLayout>

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
<variable
name="title"
type="String" />
<variable
name="status"
type="androidx.databinding.ObservableBoolean" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".maintenance.WorkOrderActivity">
<include
layout="@layout/layout_activity_title"
app:title='@{title??"总工单列表"}' />
<androidx.gridlayout.widget.GridLayout
style="@style/layout_card_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
app:columnCount="3"
app:rowCount="5">
<TextView
android:layout_height="45dp"
android:gravity="left|center"
android:text="保养日期"
android:textColor="@color/textColor1"
app:layout_columnWeight="1" />
<TextView
android:id="@+id/work_order_date"
android:layout_height="45dp"
android:gravity="right|center"
android:onClick="selectDate"
android:paddingEnd="10dp"
android:text="保养日期"
android:textColor="@color/textColor2"
android:textStyle="bold"
app:layout_columnWeight="1" />
<ImageView
android:layout_width="20dp"
android:layout_height="45dp"
android:padding="5dp"
android:src="@drawable/ic_sanjiao"
tools:ignore="UseAppTint" />
<View
android:layout_height="1dp"
android:background="#F1F1F1"
app:layout_columnSpan="3" />
<TextView
android:layout_height="45dp"
android:gravity="left|center"
android:text="站点"
android:textColor="@color/textColor1"
app:layout_columnWeight="1" />
<TextView
android:id="@+id/work_order_site"
android:layout_height="45dp"
android:gravity="right|center"
android:paddingEnd="10dp"
android:textColor="@color/textColor2"
android:textStyle="bold"
app:layout_columnWeight="1"
android:onClick="selectOrderSite"
tools:ignore="RtlHardcoded,RtlSymmetry" />
<ImageView
android:layout_width="20dp"
android:layout_height="45dp"
android:padding="5dp"
android:src="@drawable/ic_sanjiao"
tools:ignore="UseAppTint" />
<View
android:layout_height="1dp"
android:background="#F1F1F1"
app:layout_columnSpan="3" />
<TextView
android:layout_height="45dp"
android:gravity="left|center"
android:text="维保状态"
android:textColor="@color/textColor1"
app:layout_columnWeight="1" />
<TextView
android:layout_height="45dp"
android:gravity="right|center"
android:onClick="switchStatus"
android:paddingEnd="10dp"
android:text='@{status?"已完成(点击切换)":"未完成(点击切换)"}'
android:textColor='@{status? @color/buttonColor2:@color/buttonColor}'
android:textStyle="bold"
app:layout_columnWeight="1" />
<ImageView
android:layout_width="20dp"
android:layout_height="45dp"
android:padding="5dp"
android:src="@drawable/ic_sanjiao"
android:tint='@{status? @color/buttonColor2:@color/buttonColor}'
tools:ignore="UseAppTint" />
</androidx.gridlayout.widget.GridLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="点击下表的车辆,进行处理" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="12dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:backgroundTint="#4B84FE"
android:onClick="goCreateWorkOrder"
android:src="@mipmap/plus"
android:tint="@android:color/white" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>
</layout>

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/card_bg"
android:gravity="center|top"
android:orientation="vertical"
android:padding="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginTop="8dp"
android:letterSpacing="0.5"
android:text="系统提示"
android:textColor="@color/textColor1"
android:textSize="20sp"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/dialog_state"
android:layout_width="match_parent"
android:layout_height="35dp"
android:gravity="center">
<ImageView
android:layout_width="20dp"
android:layout_height="match_parent"
android:src="@mipmap/huojian" />
<TextView
android:layout_width="wrap_content"
android:layout_height="35dp"
android:gravity="center"
android:text="发起成功!"
android:textColor="@color/textColor2"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<TextView
android:id="@+id/dialog_tip"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:layout_marginTop="12dp"
android:text="选择车辆或者车票!"
android:textColor="@color/textColor2"
android:textSize="18sp" />
<Button
android:id="@+id/dialog_confirm"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="8dp"
android:background="@drawable/bg_button_blue"
android:letterSpacing="0.2"
android:text="确定"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</layout>

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="118dp"
android:layout_marginTop="12dp"
android:background="@drawable/card_bg">
<TextView
android:id="@+id/textView"
android:layout_width="150dp"
android:layout_height="40dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:gravity="center"
android:text="玲珑-B37060D"
android:textColor="@color/textColor1"
android:textSize="22sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView3"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_marginStart="12dp"
android:gravity="center|left"
android:text="轮胎报废"
android:textColor="@color/textColor2"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@+id/textView"
app:layout_constraintStart_toEndOf="@+id/textView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="32dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:background="@drawable/item_bg_1"
android:gravity="center"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="操作人 深圳西部公司"
android:textColor="@color/textColor2"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:layout_width="100dp"
android:layout_height="45dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_state_1"
android:gravity="center"
android:letterSpacing="0.1"
android:text="未完成"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="title"
type="String" />
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="@color/white">
<TextView
android:layout_width="80dp"
android:layout_height="match_parent"
android:text="〈"
android:textColor="@color/textColor1"
android:paddingEnd="20dp"
android:gravity="center"
android:textStyle="bold"
android:textSize="25sp"
android:onClick="onBackClick"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@{title}"
android:gravity="center"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@color/textColor1"
android:letterSpacing="0.2" />
</FrameLayout>
</layout>

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="text1"
type="String" />
<variable
name="text2"
type="String" />
</data>
<LinearLayout
android:orientation="vertical"
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="60dp"
android:layout_height="60dp"
android:text="@{text1}"
android:background="@drawable/icon_bg"
android:gravity="center"
android:textSize="18dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{text2}"
android:gravity="center"
android:layout_marginTop="8dp"
android:textColor="@color/textColor1"
android:textSize="15sp" />
</LinearLayout>
</layout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

@ -1,25 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="site">
 <item>左前</item>
 <item>右前</item>
 <item>左后内</item>
 <item>左后外</item>
 <item>右后内</item>
<item>右后外</item>
<item>左前</item>
<item>右前</item>
<item>左后内</item>
<item>左后外</item>
<item>右后内</item>
<item>右后外</item>
</string-array>
<string-array name="tyrekind">
 <item>正常胎</item>
 <item>翻新胎</item>
<item>正常胎</item>
<item>翻新胎</item>
</string-array>
<string-array name="user">
 <item>超级管理员</item>
<item>测试1</item>
<item>测试2</item>
<item>测试3</item>
<item>测试4</item>
<item>测试5</item>
<item>超级管理员</item>
<item>测试1</item>
<item>测试2</item>
<item>测试3</item>
<item>测试4</item>
<item>测试5</item>
</string-array>
<string-array name="result">
<item>翻新</item>
@ -31,4 +31,18 @@
<item>中等</item>
<item></item>
</string-array>
<string-array name="zxzd">
<item>光明修理厂</item>
<item>石岩修理厂</item>
</string-array>
<string-array name="work_type">
<item>二级保养</item>
<item>小修</item>
<item>抢修</item>
<item>月检</item>
<item>拆报废车</item>
<item>轮胎修补</item>
<item>轮胎报废</item>
</string-array>
</resources>

@ -4,14 +4,15 @@
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="xuebai">#f0fcff</color>
<color name="white">#ffffff</color>
<color name="white">#FEFEFE</color>
<color name="blue">#529cfd</color>
<color name="black">#232323</color>
<color name="blue2">#F0F5FD</color>
<color name="green">#E6E8F6FC</color>
<color name="title">#3b4753</color>
<!-- <color name="xuebai">#f0fcff</color>
-->
<color name="textColor1">#2C3E50</color>
<color name="textColor2">#94A4A5</color>
<color name="allbg">#F3F4F6</color>
<color name="buttonColor">#F27B1D</color>
<color name="buttonColor2">#39B44A</color>
</resources>

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="news" parent="Theme.Design.Light.NoActionBar">
<item name="colorOnPrimary">@color/white</item>
<item name="colorPrimary">@color/buttonColor</item>
<item name="android:statusBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:windowBackground">@color/allbg</item>
</style>
<style name="text_title_style">
<item name="android:layout_marginTop">16dp</item>
<item name="android:layout_marginStart">12dp</item>
<item name="android:textSize">18sp</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">@color/textColor2</item>
</style>
<style name="text_title_2">
<item name="android:textSize">18sp</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">@color/textColor1</item>
</style>
<style name="home_page_radio_button">
<item name="android:gravity">center</item>
<item name="android:button">@null</item>
<item name="android:drawablePadding">12dp</item>
</style>
<style name="layout_card_style">
<item name="android:background">@drawable/card_bg</item>
<item name="android:padding">12dp</item>
</style>
<style name="MyMiddleDialogStyle" parent="@android:style/Theme.Holo.Light.Dialog">
<!-- 窗口背景色 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!--是否有覆盖-->
<item name="android:windowContentOverlay">@null</item>
<!-- 浮于Activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 边框 -->
<item name="android:windowFrame">@null</item>
<!-- Dialog以外的区域模糊效果 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<!--进出动画-->
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
</style>
</resources>

@ -8,6 +8,9 @@
<item name="colorAccent">@color/colorAccent</item>
<item name="title">@color/title</item>
</style>
<style name="buttonStyle">
<item name="android:background">@drawable/bg_button</item>
<item name="android:textSize">23sp</item>

Loading…
Cancel
Save