diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5bcf46a..b8db0f4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -135,6 +135,10 @@ android:name=".SwitchActivity" android:exported="false" /> + post(MyUrl.url + "/system/dict/data/tyreTypeList").execute(new StringCallback() { + OkGo.post(MyUrl.url + "/system/dict/data/tyreTypeList") + .execute(new StringCallback() { @Override public void onSuccess(Response response) { hideLoadingDialog(); @@ -377,7 +380,7 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi List stringList = inStoreSpinnerVo.getKindList(); List patternList = inStoreSpinnerVo.getPatternList(); List patternLevel = inStoreSpinnerVo.getLevelList(); - List patternSize = inStoreSpinnerVo.getTyreSizeList(); + List patternSize = inStoreSpinnerVo.getTyreSizeList().stream().map(InStoreSpinnerVo.labelvalue::getLabel).collect(Collectors.toList()); List patternBrand = inStoreSpinnerVo.getTyreBrandList(); List patternGcts = inStoreSpinnerVo.getGctsList(); ArrayAdapter arrayAdapter = @@ -540,6 +543,7 @@ public class InStoreHouseActivity extends AppCompatActivity implements AdapterVi case KeyEvent.KEYCODE_F3: case KeyEvent.KEYCODE_F4: case KeyEvent.KEYCODE_F5: + case 136: // 扫描 startFlag = true; break; diff --git a/app/src/main/java/com/example/tyre/OutStoreHouseActivity.java b/app/src/main/java/com/example/tyre/OutStoreHouseActivity.java index 1ab1ffa..22f0c06 100644 --- a/app/src/main/java/com/example/tyre/OutStoreHouseActivity.java +++ b/app/src/main/java/com/example/tyre/OutStoreHouseActivity.java @@ -314,6 +314,7 @@ public class OutStoreHouseActivity extends AppCompatActivity { case KeyEvent.KEYCODE_F3: case KeyEvent.KEYCODE_F4: case KeyEvent.KEYCODE_F5: + case 136: //扫描 startFlag = true; break; diff --git a/app/src/main/java/com/example/tyre/TestActivity.java b/app/src/main/java/com/example/tyre/TestActivity.java index 49d46ad..081daa7 100644 --- a/app/src/main/java/com/example/tyre/TestActivity.java +++ b/app/src/main/java/com/example/tyre/TestActivity.java @@ -141,6 +141,7 @@ public class TestActivity extends AppCompatActivity { public void onBackPressed() { hideLoadingDialog(); Log.e("onBackPressed", "onBackPressed:+ " ); + finish(); // // 处理返回按钮点击事件 // if (isStart) { // // 如果当前处于开始状态,可以执行退出逻辑 @@ -340,6 +341,7 @@ public class TestActivity extends AppCompatActivity { case KeyEvent.KEYCODE_F3: case KeyEvent.KEYCODE_F4: case KeyEvent.KEYCODE_F5: + case 136: //扫描 startFlag = true; break; diff --git a/app/src/main/java/com/example/tyre/TyreLayoutActivity.java b/app/src/main/java/com/example/tyre/TyreLayoutActivity.java index 3eaa5e6..5f2bc02 100644 --- a/app/src/main/java/com/example/tyre/TyreLayoutActivity.java +++ b/app/src/main/java/com/example/tyre/TyreLayoutActivity.java @@ -429,6 +429,7 @@ public class TyreLayoutActivity extends AppCompatActivity { case KeyEvent.KEYCODE_F3: case KeyEvent.KEYCODE_F4: case KeyEvent.KEYCODE_F5: + case 136: //扫描 startFlag = true; break; diff --git a/app/src/main/java/com/example/tyre/TyreSearchActivity.java b/app/src/main/java/com/example/tyre/TyreSearchActivity.java index 5c30557..7ca72a5 100644 --- a/app/src/main/java/com/example/tyre/TyreSearchActivity.java +++ b/app/src/main/java/com/example/tyre/TyreSearchActivity.java @@ -296,6 +296,7 @@ public class TyreSearchActivity extends AppCompatActivity { case KeyEvent.KEYCODE_F3: case KeyEvent.KEYCODE_F4: case KeyEvent.KEYCODE_F5: + case 136: binding.scanButton.callOnClick(); break; } diff --git a/app/src/main/java/com/example/tyre/UpActivity.java b/app/src/main/java/com/example/tyre/UpActivity.java index b45eafb..8097740 100644 --- a/app/src/main/java/com/example/tyre/UpActivity.java +++ b/app/src/main/java/com/example/tyre/UpActivity.java @@ -21,8 +21,6 @@ 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.ActivityUpBinding; @@ -49,7 +47,7 @@ import java.util.List; import cn.pda.serialport.Tools; -public class UpActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { +public class UpActivity extends AllBaseActivity implements AdapterView.OnItemSelectedListener { // 防抖延迟时间 (毫秒) private static final long DEBOUNCE_DELAY = 500; @@ -78,6 +76,8 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS private Toast mToast; private Toast toast; private KeyReceiver keyReceiver; + private boolean dataType; + // 用于存储最后一次扫描到的 EPC private String lastScannedEpc; // 用于处理防抖逻辑的 Handler @@ -137,6 +137,21 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS Thread thread = new InventoryThread(); thread.start(); Util.initSoundPool(this); + + Intent intent = getIntent(); + + if (intent.getBooleanExtra("dataType", false)) dataType = true; + else dataType = false; + if (dataType) { + // 从保养跳转过来的 + binding.azlw.setText(intent.getStringExtra("location")); + binding.car.setText(intent.getStringExtra("carNo")); + ; + binding.start.setText(intent.getStringExtra("licheng")); + ; + } + + } private void bindViews() { @@ -185,8 +200,9 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS }); binding.back.setOnClickListener(v -> { - Intent intent = new Intent(this, HomePageActivity.class); - startActivity(intent); + // Intent intent = new Intent(this, HomePageActivity.class); + // startActivity(intent); + finish(); }); binding.searchButton.setOnClickListener(v -> { @@ -321,16 +337,34 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS @Override public void onNothingSelected(AdapterView parent) { } - + // 提交函数 private void up_insert(String rfid, String carNo, String millage, String wheel, String selfNo) { - OkGo.post(MyUrl.url + "/tyre/install/PdaInstallTyre").tag(this).params("tyreRfid", rfid).params("mileage", millage).params("carNo", carNo).params("wheelPostion", wheel).params("selfNo", selfNo).params("CreateBy", SharedPreferencesUtils.getstring("user", "admin")).execute(new StringCallback() { - @Override - public void onSuccess(Response response) { - hideLoadingDialog(); - String body = response.body(); - Gson gson = new Gson(); - AjaxResult ajaxResult = gson.fromJson(body, AjaxResult.class); - handleResponse(ajaxResult); + OkGo.post(MyUrl.url + "/tyre/install/PdaInstallTyre") + .tag(this) + .params("tyreRfid", rfid) + .params("mileage", millage) + .params("carNo", carNo) + .params("wheelPostion", wheel) + .params("selfNo", selfNo) + .params("CreateBy", SharedPreferencesUtils.getstring("user", "admin")) + .execute(new StringCallback() { + @Override + public void onSuccess(Response response) { + hideLoadingDialog(); + String body = response.body(); + Gson gson = new Gson(); + AjaxResult ajaxResult = gson.fromJson(body, AjaxResult.class); + if (ajaxResult.getCode().equals("0") && dataType) { + Intent intent = new Intent(); + baseTyreResult.setWheelPostion(wheel); + intent.putExtra("json", gson.toJson(baseTyreResult)); + setResult(RESULT_OK, intent); + finish(); + return; + } + + + handleResponse(ajaxResult); // try { // Gson gson = new Gson(); // BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class); @@ -342,8 +376,8 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS // } catch (JsonSyntaxException e) { // return; // } - } - }); + } + }); } private void handleResponse(AjaxResult result) { @@ -380,7 +414,7 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS } }); } - + private BaseTyre baseTyreResult; // 基本信息查询 private void find(String epc) { OkGo.post(MyUrl.url + "/tyre/tyre/pdaQueryTyreInfo").tag(this).params("tyreEpc", epc).execute(new StringCallback() { @@ -391,7 +425,9 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS try { Gson gson = new Gson(); BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class); + if (baseTyre != null) { + baseTyreResult=baseTyre; // 空值处理:若字段为 null 则显示空字符串 String TyreNo = safeGetString(baseTyre.getTyreNo()); th.setText(TyreNo); @@ -462,8 +498,9 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS var myResult = response.body(); if (myResult.getCode() == 0) { Gson gson = new Gson(); - List baseCarList = gson.fromJson(myResult.getJson(), new TypeToken>() { - }.getType()); + List baseCarList = + gson.fromJson(myResult.getJson(), new TypeToken>() { + }.getType()); Log.e("EPC", "listepc:+ " + baseCarList.size()); if (baseCarList != null && baseCarList.size() > 0) { List carNoList = new ArrayList<>(); @@ -565,11 +602,14 @@ public class UpActivity extends AppCompatActivity implements AdapterView.OnItemS case KeyEvent.KEYCODE_F3: case KeyEvent.KEYCODE_F4: case KeyEvent.KEYCODE_F5: + case 136: // 扫描 startFlag = true; break; } } - }; + } + + ; } } diff --git a/app/src/main/java/com/example/tyre/entity/InStoreSpinnerVo.java b/app/src/main/java/com/example/tyre/entity/InStoreSpinnerVo.java index 675c91c..68b3c55 100644 --- a/app/src/main/java/com/example/tyre/entity/InStoreSpinnerVo.java +++ b/app/src/main/java/com/example/tyre/entity/InStoreSpinnerVo.java @@ -4,7 +4,8 @@ import java.util.List; public class InStoreSpinnerVo { private List tyreBrandList; - private List tyreSizeList; + private List tyreSizeList; + private List tyreSizeList1; private List levelList; private List patternList; private List kindList; @@ -26,11 +27,11 @@ public class InStoreSpinnerVo { this.tyreBrandList = tyreBrandList; } - public List getTyreSizeList() { + public List getTyreSizeList() { return tyreSizeList; } - public void setTyreSizeList(List tyreSizeList) { + public void setTyreSizeList(List tyreSizeList) { this.tyreSizeList = tyreSizeList; } @@ -57,4 +58,33 @@ public class InStoreSpinnerVo { public void setKindList(List kindList) { this.kindList = kindList; } + + public List getTyreSizeList1() { + return tyreSizeList1; + } + + public void setTyreSizeList1(List tyreSizeList1) { + this.tyreSizeList1 = tyreSizeList1; + } + + public class labelvalue { + private String label; + private String value; + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } } diff --git a/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java b/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java index ee49a9f..03c047e 100644 --- a/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java +++ b/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java @@ -61,17 +61,13 @@ public class CreateWorkOrderActivity extends BaseActivity { @Override public void afterTextChanged(Editable s) { Log.e("TAG", "afterTextChanged:" + s); - if (searchRunnable != null) { - handler.removeCallbacks(searchRunnable); + if (isSearch){ + if (searchRunnable != null) { + handler.removeCallbacks(searchRunnable); + } + searchRunnable = () -> selectCarNo(s.toString()); + handler.postDelayed(searchRunnable, 1000); } - - // Start search after 1 second delay - searchRunnable = () -> selectCarNo(s.toString()); - handler.postDelayed(searchRunnable, 1000); - - // 搜索 - // selectCarNo(s.toString()); - isSearch = true; } }); diff --git a/app/src/main/java/com/example/tyre/maintenance/WorkExecuteActivity.java b/app/src/main/java/com/example/tyre/maintenance/WorkExecuteActivity.java index 96b132e..6e21cd4 100644 --- a/app/src/main/java/com/example/tyre/maintenance/WorkExecuteActivity.java +++ b/app/src/main/java/com/example/tyre/maintenance/WorkExecuteActivity.java @@ -6,6 +6,8 @@ import android.util.Log; import android.view.View; import android.widget.Toast; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; import androidx.databinding.DataBindingUtil; import com.example.tyre.R; @@ -20,12 +22,12 @@ import com.example.tyre.maintenance.been.BaseTyre; import com.example.tyre.maintenance.been.BizOrderTireDetail; import com.example.tyre.maintenance.been.Order; import com.example.tyre.maintenance.dialog.TipResultDialog; -import com.example.tyre.maintenance.dialog.TireChangeDialog; import com.example.tyre.maintenance.dialog.TireUpdateDialog; import com.example.tyre.util.CommonDialog; import com.example.tyre.util.MyUrl; import com.example.tyre.util.SharedPreferencesUtils; 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; @@ -40,19 +42,23 @@ import java.util.Map; public class WorkExecuteActivity extends BaseActivity { private ActivityWorkExecuteBinding binding; private Map tyreMap; - private TireUpdateDialog tireUpdateDialog;//点击轮胎弹窗 + private TireUpdateDialog tireUpdateDialog;// 点击轮胎弹窗 private Map orderSubmitMap; private List tireDetails; private List fileList; private TipResultDialog tipDialog; private List baseTyreList; + private String epcTag = "";// 屏蔽重复查询 + private String carNo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DataBindingUtil.setContentView(this, R.layout.activity_work_execute); + initRFIDAndKeyReceiver(); Intent intent = getIntent(); - String carNo = intent.getStringExtra("carNo"); + + carNo = intent.getStringExtra("carNo"); binding.setCarNo(carNo); tyreMap = new HashMap<>(); selectCarNo(carNo); @@ -67,12 +73,21 @@ public class WorkExecuteActivity extends BaseActivity { binding.setDate(intent.getStringExtra("maintainDate")); tireUpdateDialog = new TireUpdateDialog(this, new TireUpdateDialog.TireUpdateDialogSaveListener() { @Override - public void onSave(BizOrderTireDetail bizOrderTireDetail, File image) { + public void onSave(BizOrderTireDetail bizOrderTireDetail, File image, boolean isupdate, BizOrderTireDetail newTireDetail) { // 返回轮胎信息 bizOrderTireDetail.setOrderId(order.getOrderId()); tireDetails.add(bizOrderTireDetail); fileList.add(image); tireUpdateDialog.dismiss(); + if (isupdate) { + // 换新胎 + tireDetails.add(newTireDetail); + BaseTyre baseTyre = newTireDetail.getBaseTyre(); + String positionName = newTireDetail.getPositionName(); + tyreMap.put(positionName, baseTyre); + initTire(positionName, baseTyre);// 页面信息修改 + + } } @Override @@ -87,12 +102,7 @@ public class WorkExecuteActivity extends BaseActivity { } - @Override - public void onChengeTong(String location) { - // 同车互换 - - } }); tireClick(); @@ -131,11 +141,28 @@ public class WorkExecuteActivity extends BaseActivity { } BaseTyre baseTyre = tyreMap.get(location); if (baseTyre == null) { + ActivityResultLauncher launcher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + if (result.getResultCode() == RESULT_OK) { + Intent data = result.getData(); + // 返回json转换 + BaseTyre reBaseTyre = gson.fromJson(data.getStringExtra("json"), BaseTyre.class); + + } + } + ); + Intent intent = new Intent(this, UpActivity.class); - intent.putExtra("state", true); - startActivity(intent); + intent.putExtra("dataType", true); + intent.putExtra("location", location); + intent.putExtra("carNo", carNo); + intent.putExtra("licheng", s); + launcher.launch(intent); + }else { + tireUpdateDialog.setBaseTyre(baseTyre); } - tireUpdateDialog.setBaseTyre(baseTyre); + } // 查询轮胎信息 @@ -204,7 +231,6 @@ public class WorkExecuteActivity extends BaseActivity { } } - // 查询车辆信息 private void selectCarNo(String carNo) { OkGo.post(MyUrl.url + "/tyre/car/PdaQueryCarList").tag(this).params("carNo", carNo).execute(new MyRecultCall(dialog, this) { @@ -228,8 +254,7 @@ public class WorkExecuteActivity extends BaseActivity { Order order = (Order) orderSubmitMap.get("order"); order.setInputMileage(binding.workLicheng.getText().toString()); order.setDescription(binding.workBuchong.getText().toString()); - Log.e("TAG", "提交:" + fileList.size()); - Log.e("TAG", "提交:" + fileList.get(0).getPath()); + OkGo.post(MyUrl.url + "/tyre/order/PDASaveMaintenanceOrder") .params("json", gson.toJson(orderSubmitMap)) .addFileParams("files", fileList) @@ -256,7 +281,6 @@ public class WorkExecuteActivity extends BaseActivity { tireUpdateDialog.setImage(file); } - // 删除实时表、卸车记录表 private void down_insert(String rfid, String carNo, String millage, String wheel, String patternDepth) { OkGo.post(MyUrl.url + "/tyre/install/PdaUnInstallTyre").tag(this) @@ -270,14 +294,65 @@ public class WorkExecuteActivity extends BaseActivity { @Override public void onSuccess(Response response) { String body = response.body(); - - Gson gson = new Gson(); AjaxResult ajaxResult = gson.fromJson(body, AjaxResult.class); handleResponse(ajaxResult); } }); } + // 装车 + private void up_insert(String rfid, String carNo, String millage, String wheel, String selfNo) { + OkGo.post(MyUrl.url + "/tyre/install/PdaInstallTyre") + .tag(this) + .params("tyreRfid", rfid) + .params("mileage", millage) + .params("carNo", carNo) + .params("wheelPostion", wheel) + .params("selfNo", selfNo) + .params("CreateBy", SharedPreferencesUtils.getstring("user", "admin")) + .execute(new StringCallback() { + @Override + public void onSuccess(Response response) { + String body = response.body(); + AjaxResult ajaxResult = gson.fromJson(body, AjaxResult.class); + handleResponse(ajaxResult); + + } + }); + } + + @Override + public void sanEpcCall(String epc) { + super.sanEpcCall(epc); + if (!epcTag.equals(epc)) { + find(epc); + } + epcTag = epc; + } + + // 基本信息查询 + private void find(String epc) { + OkGo.post(MyUrl.url + "/tyre/tyre/pdaQueryTyreInfo").tag(this).params("tyreEpc", epc).execute(new StringCallback() { + @Override + public void onSuccess(Response response) { + String body = response.body(); + try { + Gson gson = new Gson(); + BaseTyre baseTyre = gson.fromJson(body, BaseTyre.class); + if (baseTyre != null) { + epcTag = ""; + tireUpdateDialog.setNewBaseTyre(baseTyre); + } else { + new CommonDialog(context).setMessage("系统无此轮胎!").show(); + + } + } catch (JsonSyntaxException e) { + return; + } + } + }); + } + private void handleResponse(AjaxResult result) { switch (result.getCode()) { case "500": diff --git a/app/src/main/java/com/example/tyre/maintenance/base/BaseActivity.java b/app/src/main/java/com/example/tyre/maintenance/base/BaseActivity.java index 3df1b0e..19a6386 100644 --- a/app/src/main/java/com/example/tyre/maintenance/base/BaseActivity.java +++ b/app/src/main/java/com/example/tyre/maintenance/base/BaseActivity.java @@ -6,17 +6,21 @@ import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.pm.PackageManager; import android.graphics.Rect; +import android.media.MediaPlayer; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.MediaStore; +import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; +import android.widget.Toast; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @@ -24,6 +28,11 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.content.FileProvider; +import com.android.hdhe.uhf.reader.UhfReader; +import com.example.tyre.MyApplication; +import com.example.tyre.R; +import com.example.tyre.maintenance.receiver.MyKeyInfoCall; +import com.example.tyre.maintenance.receiver.MyKeyReceiver; import com.example.tyre.util.MyUrl; import com.google.gson.Gson; @@ -32,6 +41,7 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; +import cn.pda.serialport.Tools; import okhttp3.MediaType; public class BaseActivity extends AppCompatActivity { @@ -44,6 +54,7 @@ public class BaseActivity extends AppCompatActivity { // 拍照 private Uri img_uri; private File outputImage; + public byte[] accessBytes = Tools.HexString2Bytes("00000000"); @SuppressLint("SimpleDateFormat") @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -178,5 +189,69 @@ public class BaseActivity extends AppCompatActivity { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); return imm.isAcceptingText(); } + public UhfReader uhfReader; + public MediaPlayer music; + private MyKeyReceiver keyReceiver; + public void initRFID() { + uhfReader = MyApplication.getManager(); + music = MediaPlayer.create(this, R.raw.msg); + } + public void initRFIDAndKeyReceiver() { + initRFID(); + initKeyRecriver(this::readEPC); + } + @SuppressLint("UnspecifiedRegisterReceiverFlag") + public void initKeyRecriver(MyKeyInfoCall call) { + keyReceiver = new MyKeyReceiver(call); + IntentFilter filter = new IntentFilter(); + filter.addAction("android.rfid.FUN_KEY"); + filter.addAction("android.intent.action.FUN_KEY"); + registerReceiver(keyReceiver, filter); + } + + + // 扫描epc + protected void readEPC() { + var tagModels = uhfReader.inventoryRealTime(); + if (tagModels == null || tagModels.isEmpty()) { + Toast.makeText(context, "读取失败", Toast.LENGTH_SHORT).show(); + return; + } + // tagModels.forEach(t-> { + // byte[] bytes = t.getmEpcBytes(); + // var epc = Tools.Bytes2HexString(bytes, bytes.length); + // + // Log.e("TAG", "读取到: "+epc); + // }); + byte[] bytes = tagModels.get(0).getmEpcBytes(); + // uhfReader.selectEPC(epcBytes);// 选择epc + // + // byte[] bytes = uhfReader.readFrom6C(1, 2, 4, accessBytes); + if (bytes == null || bytes.length == 0) { + // Toast.makeText(context, "读取失败", Toast.LENGTH_SHORT).show(); + return; + } + music.start(); + var epc = Tools.Bytes2HexString(bytes, bytes.length); + Log.e("TAG", "onkeyDown:" + epc); + sanEpcCall(epc); + } + + // 扫描epc返回 + public void sanEpcCall(String epc) { + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + try { + if (keyReceiver != null) { + unregisterReceiver(keyReceiver); + } + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + } } diff --git a/app/src/main/java/com/example/tyre/maintenance/been/BaseTyre.java b/app/src/main/java/com/example/tyre/maintenance/been/BaseTyre.java index f553ff8..a91929f 100644 --- a/app/src/main/java/com/example/tyre/maintenance/been/BaseTyre.java +++ b/app/src/main/java/com/example/tyre/maintenance/been/BaseTyre.java @@ -48,6 +48,7 @@ public class BaseTyre extends BaseObservable { */ private String tyrePattern; private String patternDepth; + private String patternDepth1; private String grooves; /** * 轮胎类别 @@ -63,13 +64,17 @@ public class BaseTyre extends BaseObservable { private String wheelPostion; private Long deptId; - public String getPatternDepth() { + public String getPatternDepth1() { if (patternDepth != null && !patternDepth.isEmpty()) { return patternDepth + " mm"; } return patternDepth; } + public String getPatternDepth() { + return patternDepth; + } + public void setPatternDepth(String patternDepth) { this.patternDepth = patternDepth; } diff --git a/app/src/main/java/com/example/tyre/maintenance/been/BizOrderTireDetail.java b/app/src/main/java/com/example/tyre/maintenance/been/BizOrderTireDetail.java index 7ed17dd..9d319b0 100644 --- a/app/src/main/java/com/example/tyre/maintenance/been/BizOrderTireDetail.java +++ b/app/src/main/java/com/example/tyre/maintenance/been/BizOrderTireDetail.java @@ -42,9 +42,6 @@ public class BizOrderTireDetail { */ private String treadDepth; private String remark; - - - /** * 胎压 */ @@ -54,6 +51,27 @@ public class BizOrderTireDetail { * 轮胎状态描述(截图中的“新胎”、“模拟数据”) */ private String tireStatus; + // 数据类型(保养;换新胎,卸车;换新胎,装车) + private String dataType; + private BaseTyre baseTyre;//基础轮胎信息 + + + + public BaseTyre getBaseTyre() { + return baseTyre; + } + + public void setBaseTyre(BaseTyre baseTyre) { + this.baseTyre = baseTyre; + } + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } public String getRemark() { return remark; diff --git a/app/src/main/java/com/example/tyre/maintenance/dialog/TireChangeDialog.java b/app/src/main/java/com/example/tyre/maintenance/dialog/TireChangeDialog.java index 157f8dd..6d09d6c 100644 --- a/app/src/main/java/com/example/tyre/maintenance/dialog/TireChangeDialog.java +++ b/app/src/main/java/com/example/tyre/maintenance/dialog/TireChangeDialog.java @@ -17,6 +17,7 @@ import androidx.databinding.DataBindingUtil; import com.example.tyre.R; import com.example.tyre.databinding.DialogTireChangeBinding; import com.example.tyre.maintenance.been.BaseTyre; +import com.example.tyre.maintenance.been.BizOrderTireDetail; import java.util.HashMap; import java.util.List; @@ -27,9 +28,11 @@ public class TireChangeDialog extends Dialog { private List baseTyreList; private Map tyreMap; private String locationOld; + private TireChangeListener tireChangeListener; - public TireChangeDialog(@NonNull Context context) { + public TireChangeDialog(@NonNull Context context, TireChangeListener tireChangeListener) { super(context, R.style.MyMiddleDialogStyle); + this.tireChangeListener = tireChangeListener; binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialog_tire_change, null, false); binding.dialogTitle1.setOnClickListener(view -> dismiss()); @@ -47,8 +50,8 @@ public class TireChangeDialog extends Dialog { baseTyreList.forEach(tire -> { String wheelPostion = tire.getWheelPostion(); tyreMap.put(wheelPostion, tire); - if (tire.getTyreNo()==null||tire.getTyreNo().equals("")){ - tire.setTyreNo("t:"+wheelPostion); + if (tire.getTyreNo() == null || tire.getTyreNo().equals("")) { + tire.setTyreNo("t:" + wheelPostion); } initTire(wheelPostion, tire); }); @@ -88,17 +91,17 @@ public class TireChangeDialog extends Dialog { } BaseTyre baseTyre = tyreMap.get(location); BaseTyre baseTyreOld = tyreMap.get(this.locationOld); - if (baseTyre==null) { + if (baseTyre == null) { Toast.makeText(getContext(), "当前轮胎位置不存在", Toast.LENGTH_SHORT).show(); return; } initTire(this.locationOld, baseTyre); - Log.e("TAG", "tireLayoutCllick:" + location+","+baseTyre.toString()); + Log.e("TAG", "tireLayoutCllick:" + location + "," + baseTyre.toString()); initTire(location, baseTyreOld); - Log.e("TAG", "tireLayoutCllick:" + location+","+baseTyreOld.toString()); - + Log.e("TAG", "tireLayoutCllick:" + location + "," + baseTyreOld.toString()); + Toast.makeText(getContext(), "互换成功", Toast.LENGTH_SHORT).show(); } /** @@ -145,4 +148,9 @@ public class TireChangeDialog extends Dialog { break; } } + + public interface TireChangeListener { + void onChangeSave(BizOrderTireDetail bizOrderTireDetail); + + } } diff --git a/app/src/main/java/com/example/tyre/maintenance/dialog/TireUpdateDialog.java b/app/src/main/java/com/example/tyre/maintenance/dialog/TireUpdateDialog.java index 0d39ec1..fd01a9f 100644 --- a/app/src/main/java/com/example/tyre/maintenance/dialog/TireUpdateDialog.java +++ b/app/src/main/java/com/example/tyre/maintenance/dialog/TireUpdateDialog.java @@ -27,15 +27,14 @@ public class TireUpdateDialog extends Dialog { private BaseTyre baseTyre; private ObservableBoolean isupdate; private BizOrderTireDetail bizOrderTireDetail; + private BizOrderTireDetail newTireDetail;// 新轮胎 private TireUpdateDialogSaveListener listener; private File image; private ObservableBoolean photoState; - private TireChangeDialog tireChangeDialog; + private TireChangeDialog tireChangeDialog;// 同车轮胎互换弹窗 private List baseTyreList; + private BaseTyre newBaseTyre; - public void setBaseTyreList(List baseTyreList) { - this.baseTyreList = baseTyreList; - } public TireUpdateDialog(@NonNull Context context, TireUpdateDialogSaveListener listener) { super(context, R.style.MyMiddleDialogStyle); @@ -50,8 +49,8 @@ public class TireUpdateDialog extends Dialog { isupdate.set(isChecked); }); - // 保存按钮点击事件 - binding.dialogTireUpdateSave.setOnClickListener(view -> { + + binding.dialogTireUpdateSave.setOnClickListener(view -> {// 保存按钮点击事件 String shendu = binding.dialogTireShendu1.getText().toString(); String taiya = binding.dialogTireTaiya1.getText().toString(); if (shendu.isEmpty() || taiya.isEmpty()) { @@ -66,7 +65,21 @@ public class TireUpdateDialog extends Dialog { bizOrderTireDetail.setTreadDepth(shendu);// 花纹深度 bizOrderTireDetail.setTirePress(taiya);// 胎压 - listener.onSave(bizOrderTireDetail, image); + boolean isupdate1 = isupdate.get(); + + if (isupdate1) { + String s = binding.newTireInfo2.getText().toString(); + String s1 = binding.dialogTireShendu2.getText().toString(); + String s2 = binding.dialogTireTaiya2.getText().toString(); + if (s1.isEmpty() || s2.isEmpty()) { + Toast.makeText(context, "请输入花纹深度和胎压", Toast.LENGTH_SHORT).show(); + return; + } + newTireDetail.setTreadDepth(s1);// 花纹深度 + newTireDetail.setTirePress(s2);// 胎压 + bizOrderTireDetail.setDataType("换新胎,卸车"); + } + listener.onSave(bizOrderTireDetail, image, isupdate1,newTireDetail); }); // 同车互换 binding.dialogButtonTong.setOnClickListener(view -> { @@ -82,8 +95,36 @@ public class TireUpdateDialog extends Dialog { photoState = new ObservableBoolean(false); binding.setPhotoState(photoState); setContentView(binding.getRoot()); - tireChangeDialog=new TireChangeDialog(context); + tireChangeDialog = new TireChangeDialog(context, new TireChangeDialog.TireChangeListener() { + @Override + public void onChangeSave(BizOrderTireDetail bizOrderTireDetail) { + } + + + }); + + } + + // 换新胎了 + public void setNewBaseTyre(BaseTyre newBaseTyre) { + this.newBaseTyre = newBaseTyre; + + // 显示用 + String tyreNo = baseTyre.getTyreNo(); + String selfNo = baseTyre.getSelfNo(); + binding.newTireInfo1.setText(tyreNo == null ? baseTyre.getTyreEpc() : tyreNo); + binding.newTireInfo2.setText(selfNo); + binding.dialogTireShendu2.setText(newBaseTyre.getPatternDepth()); + // id + Long tyreId = baseTyre.getTyreId(); + newTireDetail.setTireId(tyreId); + newTireDetail.setTireCode(tyreNo); + newTireDetail.setBaseTyre(newBaseTyre); + } + + public void setBaseTyreList(List baseTyreList) { + this.baseTyreList = baseTyreList; } public void setBaseTyre(BaseTyre baseTyre) { @@ -93,6 +134,13 @@ public class TireUpdateDialog extends Dialog { bizOrderTireDetail.setTireId(baseTyre.getTyreId()); bizOrderTireDetail.setTireCode(baseTyre.getTyreNo()); bizOrderTireDetail.setPositionName(baseTyre.getWheelPostion()); + bizOrderTireDetail.setDataType("保养"); + bizOrderTireDetail.setBaseTyre(baseTyre); + // 换新胎初始化 + newTireDetail = new BizOrderTireDetail(); + newTireDetail.setPositionName(baseTyre.getWheelPostion());// 保存轮位 + newTireDetail.setDataType("换新胎,装车"); + // 重置ui photoState.set(false); binding.dialogUpdatePhoto.setImageResource(R.mipmap.ic_xiangji); show(); @@ -130,9 +178,10 @@ public class TireUpdateDialog extends Dialog { } public interface TireUpdateDialogSaveListener { - void onSave(BizOrderTireDetail bizOrderTireDetail, File image); + void onSave(BizOrderTireDetail bizOrderTireDetail, File image, boolean isupdate,BizOrderTireDetail newTireDetail); void onTakePhoto(); - void onChengeTong(String location); + + } } diff --git a/app/src/main/java/com/example/tyre/maintenance/receiver/MyKeyInfoCall.java b/app/src/main/java/com/example/tyre/maintenance/receiver/MyKeyInfoCall.java new file mode 100644 index 0000000..382ba58 --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/receiver/MyKeyInfoCall.java @@ -0,0 +1,9 @@ +package com.example.tyre.maintenance.receiver; + +/** + * @author wanghao + * @date 2024/7/9 17:24 + */ +public interface MyKeyInfoCall { + void onkeyDown(); +} diff --git a/app/src/main/java/com/example/tyre/maintenance/receiver/MyKeyReceiver.java b/app/src/main/java/com/example/tyre/maintenance/receiver/MyKeyReceiver.java new file mode 100644 index 0000000..3cff7eb --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/receiver/MyKeyReceiver.java @@ -0,0 +1,30 @@ +package com.example.tyre.maintenance.receiver; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; +import android.view.KeyEvent; + +public class MyKeyReceiver extends BroadcastReceiver { + private MyKeyInfoCall myKeyInfoCall; + + public MyKeyReceiver() { + } + + public MyKeyReceiver(MyKeyInfoCall myKeyInfoCall) { + this.myKeyInfoCall = myKeyInfoCall; + } + + @Override + public void onReceive(Context context, Intent intent) { + Log.e("TAG", "onReceive:" + intent.getAction()); + var keydown = intent.getBooleanExtra("keydown", false); + var keyCode = intent.getIntExtra("keyCode", 0); + Log.e("TAG", "onReceive:" + keydown + " --" + keyCode); + if (keydown && (keyCode == 135 || keyCode ==136)) { + myKeyInfoCall.onkeyDown(); + } + + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_down.xml b/app/src/main/res/layout/activity_down.xml index 2bcee7b..ef4beb5 100644 --- a/app/src/main/res/layout/activity_down.xml +++ b/app/src/main/res/layout/activity_down.xml @@ -156,7 +156,8 @@ android:textSize="22sp" android:textColor="@color/black" android:background="@drawable/bg_santex_coppy" - android:gravity="center" /> + android:gravity="center" + android:inputType="number"/> + style="@style/buttonStyle"/> + style="@style/buttonStyle"/> diff --git a/app/src/main/res/layout/activity_instorehouse.xml b/app/src/main/res/layout/activity_instorehouse.xml index 79d7b0e..0c5a9d2 100644 --- a/app/src/main/res/layout/activity_instorehouse.xml +++ b/app/src/main/res/layout/activity_instorehouse.xml @@ -46,6 +46,8 @@ android:layout_marginTop="10dp" android:layout_marginEnd="8dp" android:orientation="horizontal" + android:focusable="true" + android:focusableInTouchMode="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linearLayout3"> @@ -62,6 +64,10 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bg_santex_coppy" + android:inputType="textVisiblePassword" + android:focusable="true" + android:focusableInTouchMode="true" + android:selectable="true" /> diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml index d9537ef..6f559bb 100644 --- a/app/src/main/res/layout/activity_test.xml +++ b/app/src/main/res/layout/activity_test.xml @@ -61,28 +61,18 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linearLayout2"> - -