diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6b0ac0..6ed9ce0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,10 +24,26 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> + + + + + + + + + + android:theme="@style/news" /> - - - - + + + + diff --git a/app/src/main/java/com/example/tyre/MyApplication.java b/app/src/main/java/com/example/tyre/MyApplication.java index b44f771..bfb38c7 100644 --- a/app/src/main/java/com/example/tyre/MyApplication.java +++ b/app/src/main/java/com/example/tyre/MyApplication.java @@ -64,6 +64,22 @@ public class MyApplication extends Application { private void okGoBase() { // 初始化网络请求框架 + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkGo"); + loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY); // log打印级别,决定了log显示的详细程度 + loggingInterceptor.setColorLevel(Level.SEVERE); // log颜色级别,决定了log在控制台显示的颜色 + HttpsUtils.SSLParams sslParams1 = + HttpsUtils.getSslSocketFactory(); // 方法一:信任所有证书,不安全有风险 + builder.sslSocketFactory(sslParams1.sSLSocketFactory, sslParams1.trustManager); + builder.addInterceptor(loggingInterceptor); + builder.readTimeout(9000, TimeUnit.MILLISECONDS); // 全局的读取超时时间 + builder.writeTimeout(9000, TimeUnit.MILLISECONDS); // 全局的写入超时时间 + builder.connectTimeout(9000, TimeUnit.MILLISECONDS); // 全局的连接超时时间 + builder.cookieJar(new CookieJarImpl(new MemoryCookieStore())); // 使用内存保持cookie,app退出后,cookie消失 + OkGo.getInstance().init(this).setOkHttpClient(builder.build()) // 建议设置OkHttpClient,不设置将使用默认的 + .setCacheMode(CacheMode.NO_CACHE) // 全局统一缓存模式,默认不使用缓存,可以不传 + .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE) // 全局统一缓存时间,默认永不过期,可以不传 + .setRetryCount(0); } // 添加Toast方法 diff --git a/app/src/main/java/com/example/tyre/maintenance/BaseActivity.java b/app/src/main/java/com/example/tyre/maintenance/BaseActivity.java index e618394..b41386b 100644 --- a/app/src/main/java/com/example/tyre/maintenance/BaseActivity.java +++ b/app/src/main/java/com/example/tyre/maintenance/BaseActivity.java @@ -1,16 +1,45 @@ package com.example.tyre.maintenance; +import android.annotation.SuppressLint; +import android.app.ProgressDialog; +import android.content.Context; +import android.os.Bundle; import android.view.View; +import android.view.Window; +import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; -import java.text.Format; +import com.google.gson.Gson; + import java.text.SimpleDateFormat; public class BaseActivity extends AppCompatActivity { - public SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd"); + public SimpleDateFormat dateFormat ; + public ProgressDialog dialog; + public Context context; + public Gson gson; + @SuppressLint("SimpleDateFormat") + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + context = this; + dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + gson=new Gson(); + initDialog(); + + } public void onBackClick(View view) { finish(); } + + private void initDialog() { + dialog = new ProgressDialog(context); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setCanceledOnTouchOutside(false); + dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + dialog.setMessage("loading..."); + } + } 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 eb9f39d..31fc5be 100644 --- a/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java +++ b/app/src/main/java/com/example/tyre/maintenance/CreateWorkOrderActivity.java @@ -1,33 +1,98 @@ package com.example.tyre.maintenance; -import androidx.appcompat.app.AppCompatActivity; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.Log; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.ListPopupWindow; + 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.databinding.ActivityCreateWorkOrderBinding; +import com.example.tyre.entity.BaseCar; import com.example.tyre.maintenance.dialog.TipResultDialog; +import com.example.tyre.util.MyUrl; +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.util.ArrayList; +import java.util.List; public class CreateWorkOrderActivity extends BaseActivity { - TipResultDialog dialog; - - + private TipResultDialog tipDialog; + private ActivityCreateWorkOrderBinding binding; + private ListPopupWindow lpw; + private boolean isSearch = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DataBindingUtil.setContentView(this,R.layout.activity_create_work_order); - dialog = new TipResultDialog(this, this); + ActivityCreateWorkOrderBinding binding; + binding = DataBindingUtil.setContentView(this, R.layout.activity_create_work_order); + tipDialog = new TipResultDialog(this, this); + binding.createWorkCarNo.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + Log.e("TAG", "onTextChanged:" + count); + } + + @Override + public void afterTextChanged(Editable s) { + Log.e("TAG", "afterTextChanged:" + s); + if (isSearch && s.length() >= 4) { + // 搜索 + selectCarNo(s.toString()); + } + isSearch=true; + } + }); + lpw = new ListPopupWindow(this); + lpw.setAnchorView(binding.createWorkCarNo); + lpw.setOnItemClickListener((parent, view, position, id) -> { + isSearch=false; + binding.createWorkCarNo.setText(parent.getItemAtPosition(position).toString()); + lpw.dismiss(); + }); + } + + private void selectCarNo(String carNo) { + OkGo.post(MyUrl.url + "/tyre/car/PdaQueryCarList") + .tag(this) + .params("carNo", carNo) + .execute(new StringCallback() { + @Override + public void onSuccess(Response response) { + String body = response.body(); + List baseCarList = gson.fromJson(body, new TypeToken>() { + }.getType()); + + if (baseCarList == null || baseCarList.isEmpty()) + return; + + List carNoList = new ArrayList<>(baseCarList.size()); + baseCarList.forEach(car -> carNoList.add(car.getCarNo())); + lpw.setAdapter(new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, carNoList)); + lpw.show(); + } + }); } public void openSelectCarDialog(View view) { - + } public void generateWorkOrder(View view) { - dialog.show(true, "工单生成成功", true); + // dialog.show(true, "工单生成成功", true); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/tyre/maintenance/TireRepairActivity.java b/app/src/main/java/com/example/tyre/maintenance/TireRepairActivity.java new file mode 100644 index 0000000..cfaade9 --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/TireRepairActivity.java @@ -0,0 +1,16 @@ +package com.example.tyre.maintenance; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +import com.example.tyre.R; + +public class TireRepairActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_tire_repair); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tyre/maintenance/TireScrapActivity.java b/app/src/main/java/com/example/tyre/maintenance/TireScrapActivity.java new file mode 100644 index 0000000..120021e --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/TireScrapActivity.java @@ -0,0 +1,16 @@ +package com.example.tyre.maintenance; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +import com.example.tyre.R; + +public class TireScrapActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_tire_scrap); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tyre/maintenance/WorkExecuteActivity.java b/app/src/main/java/com/example/tyre/maintenance/WorkExecuteActivity.java new file mode 100644 index 0000000..4121aac --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/WorkExecuteActivity.java @@ -0,0 +1,17 @@ +package com.example.tyre.maintenance; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; + +import android.os.Bundle; + +import com.example.tyre.R; + +public class WorkExecuteActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + DataBindingUtil. setContentView(this,R.layout.activity_work_execute); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tyre/maintenance/WorkOrderActivity.java b/app/src/main/java/com/example/tyre/maintenance/WorkOrderActivity.java index 4ced489..67ce3db 100644 --- a/app/src/main/java/com/example/tyre/maintenance/WorkOrderActivity.java +++ b/app/src/main/java/com/example/tyre/maintenance/WorkOrderActivity.java @@ -28,7 +28,8 @@ public class WorkOrderActivity extends BaseActivity { binding = DataBindingUtil.setContentView(this, R.layout.activity_work_order); status = new ObservableBoolean(false); binding.setStatus(status); - + String title = getIntent().getStringExtra("title"); + binding.setTitle(title); // 获取当前日期 Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); @@ -49,7 +50,7 @@ public class WorkOrderActivity extends BaseActivity { 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();` + listPopupWindow.dismiss(); }); } @@ -62,7 +63,7 @@ public class WorkOrderActivity extends BaseActivity { public void selectOrderSite(View view) { listPopupWindow.show(); } - + // 创建 public void goCreateWorkOrder(View view) { startActivity(new Intent(this, CreateWorkOrderActivity.class)); } 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 new file mode 100644 index 0000000..a8f6727 --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/been/BaseTyre.java @@ -0,0 +1,187 @@ +package com.example.tyre.maintenance.been; + +import androidx.databinding.BaseObservable; + +/** + * 轮胎基础信息对象 base_tyre + * + * @author highway + * @date 2025-12-16 + */ +public class BaseTyre extends BaseObservable { + + /** + * 主键 + */ + private Long tyreId; + + /** + * 胎号 + */ + private String tyreNo; + /** + * 自编号 + */ + private String selfNo; + /** + * RFID标签 + */ + private String tyreEpc; + + /** + * 轮胎品牌 + */ + private String tyreBrand; + + /** + * 轮胎型号 + */ + private String tyreModel; + + /** + * 轮胎层级 + */ + private String tyreLevel; + + /** + * 轮胎花纹 + */ + private String tyrePattern; + private String patternDepth; + private String grooves; + /** + * 轮胎类别 + */ + private String tyreType; + + /** + * 所属车队 + */ + private String team; + + private String carNo; + private String wheelPostion; + private Long deptId; + + public String getPatternDepth() { + return patternDepth; + } + + public void setPatternDepth(String patternDepth) { + this.patternDepth = patternDepth; + } + + public String getGrooves() { + return grooves; + } + + public void setGrooves(String grooves) { + this.grooves = grooves; + } + + public String getSelfNo() { + return selfNo; + } + + public void setSelfNo(String selfNo) { + this.selfNo = selfNo; + } + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + + public String getCarNo() { + return carNo; + } + + public void setCarNo(String carNo) { + this.carNo = carNo; + } + + public String getWheelPostion() { + return wheelPostion; + } + + public void setWheelPostion(String wheelPostion) { + this.wheelPostion = wheelPostion; + } + + public Long getTyreId() { + return tyreId; + } + + public void setTyreId(Long tyreId) { + this.tyreId = tyreId; + } + + public String getTyreNo() { + return tyreNo; + } + + public void setTyreNo(String tyreNo) { + this.tyreNo = tyreNo; + } + + public String getTyreEpc() { + return tyreEpc; + } + + public void setTyreEpc(String tyreEpc) { + this.tyreEpc = tyreEpc; + } + + public String getTyreBrand() { + return tyreBrand; + } + + public void setTyreBrand(String tyreBrand) { + this.tyreBrand = tyreBrand; + } + + public String getTyreModel() { + return tyreModel; + } + + public void setTyreModel(String tyreModel) { + this.tyreModel = tyreModel; + } + + public String getTyreLevel() { + return tyreLevel; + } + + public void setTyreLevel(String tyreLevel) { + this.tyreLevel = tyreLevel; + } + + public String getTyrePattern() { + return tyrePattern; + } + + public void setTyrePattern(String tyrePattern) { + this.tyrePattern = tyrePattern; + } + + public String getTyreType() { + return tyreType; + } + + public void setTyreType(String tyreType) { + this.tyreType = tyreType; + } + + public String getTeam() { + return team; + } + + public void setTeam(String team) { + this.team = team; + } + + +} diff --git a/app/src/main/java/com/example/tyre/maintenance/dialog/SelectCarDialog.java b/app/src/main/java/com/example/tyre/maintenance/dialog/SelectCarDialog.java new file mode 100644 index 0000000..e02daa2 --- /dev/null +++ b/app/src/main/java/com/example/tyre/maintenance/dialog/SelectCarDialog.java @@ -0,0 +1,19 @@ +package com.example.tyre.maintenance.dialog; + +import android.app.Dialog; +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; + +public class SelectCarDialog extends Dialog { + + private Gson gson; + + public SelectCarDialog(@NonNull Context context) { + super(context); + gson = new Gson(); + + } +} diff --git a/app/src/main/java/com/example/tyre/util/MyUrl.java b/app/src/main/java/com/example/tyre/util/MyUrl.java index 23cea64..077d82b 100644 --- a/app/src/main/java/com/example/tyre/util/MyUrl.java +++ b/app/src/main/java/com/example/tyre/util/MyUrl.java @@ -6,7 +6,7 @@ package com.example.tyre.util; * @date: 2019-10-24 13:59 */ public class MyUrl { -// public static String url="http://192.168.31.26:8020"; - public static String url="http://www.qdhys.xyz:8020"; + public static String url="http://192.168.137.1:8020"; + // public static String url="http://www.qdhys.xyz:8020"; // public static String url="http://10.11.187.77:8020"; } diff --git a/app/src/main/res/drawable/bg_grey.xml b/app/src/main/res/drawable/bg_grey.xml new file mode 100644 index 0000000..5d12b05 --- /dev/null +++ b/app/src/main/res/drawable/bg_grey.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_blue_1.xml b/app/src/main/res/drawable/bg_stroke_blue_1.xml new file mode 100644 index 0000000..0cacedc --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_blue_1.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/layout_trae.xml b/app/src/main/res/drawable/layout_trae.xml new file mode 100644 index 0000000..9aa11f1 --- /dev/null +++ b/app/src/main/res/drawable/layout_trae.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_create_work_order.xml b/app/src/main/res/layout/activity_create_work_order.xml index d109c90..001a50b 100644 --- a/app/src/main/res/layout/activity_create_work_order.xml +++ b/app/src/main/res/layout/activity_create_work_order.xml @@ -1,92 +1,100 @@ - + xmlns:tools="http://schemas.android.com/tools"> - + + + + tools:context=".maintenance.CreateWorkOrderActivity"> - + + + android:layout_margin="12dp" + android:background="@drawable/card_bg" + android:orientation="vertical" + android:padding="12dp"> - + - + - + - - + + + + + + + + + + +