Bläddra i källkod

1.重写首页柜子展示,由于代码质量太低导致各种无法控制的BUG
2.修复诸多小BUG

JaycePC 1 vecka sedan
förälder
incheckning
bd3d39e058
24 ändrade filer med 883 tillägg och 691 borttagningar
  1. 2 0
      app/build.gradle
  2. 3 3
      app/src/main/java/com/rc/httpcore/bean/HxpChemicalVo.java
  3. 124 224
      app/src/main/java/xn/hxp/ui/MainActivity.java
  4. 1 1
      app/src/main/java/xn/hxp/ui/SettingActivity.java
  5. 2 211
      app/src/main/java/xn/hxp/ui/adapter/CabinetAdapter.kt
  6. 133 0
      app/src/main/java/xn/hxp/ui/adapter/CabinetBannerAdapter.java
  7. 7 4
      app/src/main/java/xn/hxp/ui/plan/PlanAddData.java
  8. 168 176
      app/src/main/java/xn/hxp/ui/plan/already/AlreadyActivity.java
  9. 5 4
      app/src/main/java/xn/hxp/ui/plan/already/AlreadyAdapter.java
  10. 85 0
      app/src/main/java/xn/hxp/ui/plan/already/ApplyOrderBean.java
  11. 11 4
      app/src/main/java/xn/hxp/ui/plan/change/ChangeCabinetFragment.java
  12. 19 6
      app/src/main/java/xn/hxp/ui/plan/change/ChangeCabinetHelp.java
  13. 7 0
      app/src/main/java/xn/hxp/ui/plan/change/SingleSelectCallBack.java
  14. 3 0
      app/src/main/java/xn/hxp/ui/plan/room/dao/HxpInventoryDAO.java
  15. 6 1
      app/src/main/java/xn/hxp/ui/plan/save_list/SaveListActivity.java
  16. 63 5
      app/src/main/java/xn/hxp/ui/plan/unlock/UnlockActivityHelp.java
  17. 1 4
      app/src/main/res/drawable/bg_closes.xml
  18. 6 0
      app/src/main/res/drawable/shape_rect_ffffff_45.xml
  19. 4 4
      app/src/main/res/layout/activity_change_cabinet.xml
  20. 46 41
      app/src/main/res/layout/activity_main.xml
  21. 1 1
      app/src/main/res/layout/activity_setting.xml
  22. 184 0
      app/src/main/res/layout/fragment_main_cabinet.xml
  23. 1 1
      app/src/main/res/values-night/themes.xml
  24. 1 1
      settings.gradle

+ 2 - 0
app/build.gradle

@@ -144,4 +144,6 @@ dependencies {
 
     implementation 'com.github.anrwatchdog:anrwatchdog:1.4.0'
 
+    implementation 'com.github.zhpanvip:bannerviewpager:3.5.12'
+
 }

+ 3 - 3
app/src/main/java/com/rc/httpcore/bean/HxpChemicalVo.java

@@ -86,7 +86,7 @@ public class HxpChemicalVo implements Serializable {
     // ("机柜名称")
     private String cabinetName;
     // ("柜门id")
-    private Long doorId;
+    private long doorId;
     // ("柜门名称")
     private String doorName;
     // 存储到哪层层数
@@ -330,11 +330,11 @@ public class HxpChemicalVo implements Serializable {
         this.cabinetName = cabinetName;
     }
 
-    public Long getDoorId() {
+    public long getDoorId() {
         return doorId;
     }
 
-    public void setDoorId(Long doorId) {
+    public void setDoorId(long doorId) {
         this.doorId = doorId;
     }
 

+ 124 - 224
app/src/main/java/xn/hxp/ui/MainActivity.java

@@ -6,7 +6,6 @@ import android.content.IntentFilter;
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.graphics.drawable.GradientDrawable;
-import android.hardware.usb.UsbManager;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.CountDownTimer;
@@ -19,12 +18,11 @@ import android.view.KeyEvent;
 import android.view.View;
 import android.widget.EditText;
 
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
 import androidx.viewbinding.ViewBinding;
 
 import com.blankj.utilcode.util.ActivityUtils;
 import com.blankj.utilcode.util.AppUtils;
+import com.blankj.utilcode.util.ClickUtils;
 import com.blankj.utilcode.util.LogUtils;
 import com.blankj.utilcode.util.SPUtils;
 import com.bumptech.glide.Glide;
@@ -36,12 +34,10 @@ import com.lztek.toolkit.Lztek;
 import com.rc.core.ui.activity.BaseActivity;
 import com.rc.httpcore.HttpClient;
 import com.rc.httpcore.HttpConfig;
+import com.rc.httpcore.bean.RuleBean;
 import com.rc.httpcore.client.ApiRepository;
 import com.rc.httpcore.client.HttpTool;
-import com.rc.httpcore.exception.NetException;
 
-import java.net.ConnectException;
-import java.net.SocketTimeoutException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -50,13 +46,11 @@ import java.util.Map;
 import io.reactivex.rxjava3.functions.Consumer;
 import kotlin.Unit;
 import kotlin.jvm.functions.Function1;
-import retrofit2.HttpException;
 import xn.hxp.R;
 import xn.hxp.app.ChemicalApp;
 import xn.hxp.databinding.ActivityMainBinding;
 import xn.hxp.receiver.TimeTickReceiver;
-import xn.hxp.receiver.UsbReceiver;
-import xn.hxp.ui.adapter.CabinetAdapter;
+import xn.hxp.ui.adapter.CabinetBannerAdapter;
 import xn.hxp.ui.discard.LedgerActivity;
 import xn.hxp.ui.discard.WasteChemicalsActivity;
 import xn.hxp.ui.inquiry.InquiryActivity;
@@ -80,12 +74,10 @@ import xn.hxp.weidith.PlanDialog;
 
 public class MainActivity extends BaseActivity {
 
+    private List<RuleBean> ruleBeanList = new ArrayList<>();
+
     private ActivityMainBinding viewBinding;
     private TimeUpdater timeUpdater;
-    private CabinetAdapter mAdapter;
-    private int currentPosition = 0;
-    private RecyclerView recyclerView;
-    private UsbReceiver mUsbReceiver;
     private Lztek mLztek;
     private String mDeviceNum;
     private List<String> faceList;
@@ -93,10 +85,6 @@ public class MainActivity extends BaseActivity {
     private int mCounter = 0;
     private int MAX_TIME = 60;
     private static final int WHAT_COUNT_DOWN = 1;
-    private LinearLayoutManager layoutManager;
-    private Handler handlerBanner;
-    private Runnable updateRunnable;
-    private boolean isUpdating = false;
     private TimeTickReceiver timeTickReceiver = new TimeTickReceiver();
     private PlanDialog planDialog;
     private CountDownTimer heartbeatCdTimer;
@@ -125,10 +113,6 @@ public class MainActivity extends BaseActivity {
             viewBinding.inc.imgE.setBackgroundResource(R.mipmap.icon_login_img);
         }
 
-        if (mAdapter.getData() != null && mAdapter.getData().size() > 1) {
-            startUpdating();
-        }
-
         timeUpdater.startUpdating();
         getCabinetIn();
         basicConf();
@@ -140,7 +124,7 @@ public class MainActivity extends BaseActivity {
         registerReceiver(timeTickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
 
         viewBinding.versionName.setText("版本号:" + AppUtils.getAppVersionName());
-
+        viewBinding.cabinetVP.registerLifecycleObserver(getLifecycle()).setAdapter(new CabinetBannerAdapter()).create(ruleBeanList);
         viewBinding.test.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -226,7 +210,6 @@ public class MainActivity extends BaseActivity {
     protected void onPause() {
         LogUtils.i("============onPause");
         try {
-            stopUpdating();
             timeUpdater.stopUpdating();
             LogUtils.i("========UI在刷新停止");
             mCountDownHandler.removeMessages(WHAT_COUNT_DOWN);
@@ -243,31 +226,23 @@ public class MainActivity extends BaseActivity {
 
     private void getCabinetIn() {
         showLoading("查询中...");
-        ApiRepository.INSTANCE.getCabinetBySubId(ChemicalApp.subjectId)
+        addDisposable(ApiRepository.INSTANCE.getCabinetBySubId(ChemicalApp.subjectId)
                 .subscribe(data -> {
                     dismissLoading();
-                    mAdapter.setNewInstance(new ArrayList<>(data));
-                    if (mAdapter.getData() != null && mAdapter.getData().size() > 1) {
-                        handlerBanner = new Handler(Looper.getMainLooper());
-                        updateRunnable = new Runnable() {
-                            @Override
-                            public void run() {
-                                int currentPosition = layoutManager.findFirstVisibleItemPosition();
-                                if (currentPosition != RecyclerView.NO_POSITION) {
-                                    int nextPosition = (currentPosition + 1) % mAdapter.getItemCount();
-                                    recyclerView.smoothScrollToPosition(nextPosition);
-                                }
-                                if (isUpdating) {
-                                    handlerBanner.postDelayed(this, 5000);
-                                }
-                            }
-                        };
-                        startUpdating();
+                    ruleBeanList.clear();
+                    ruleBeanList.addAll(data);
+                    if (ruleBeanList.size() > 1) {
+                        viewBinding.last.setVisibility(View.VISIBLE);
+                        viewBinding.next.setVisibility(View.VISIBLE);
+                    } else {
+                        viewBinding.last.setVisibility(View.GONE);
+                        viewBinding.next.setVisibility(View.GONE);
                     }
+                    viewBinding.cabinetVP.refreshData(ruleBeanList);
                 }, throwable -> {
                     dismissLoading();
                     throwable.printStackTrace();
-                });
+                }));
     }
 
     private void getUserIds() {
@@ -283,96 +258,18 @@ public class MainActivity extends BaseActivity {
         }
     }
 
-    private void initAdapter() {
-        recyclerView = viewBinding.relView;
-        layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
-        recyclerView.setLayoutManager(layoutManager);
-        recyclerView.setAdapter(mAdapter);
-        recyclerView.setOnTouchListener((v, event) -> true);
-
-        mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
-            if (ChemicalApp.userData != null) {
-                Map<String, Object> map = new HashMap<>();
-                map.put("logIn", 1);
-                if (view.getId() == R.id.lingOne) {
-                    map.put("cabinetId", mAdapter.getData().get(position).getCabinetId());
-                    map.put("doorId", mAdapter.getData().get(position).getCabinetDoorVoList().get(0).getDoorUniqueId());
-                    UiManager.INSTANCE.switcher(this, map, InquiryActivity.class);
-                } else if (view.getId() == R.id.lintTwo) {
-                    map.put("cabinetId", mAdapter.getData().get(position).getCabinetDoorVoList().get(1).getCabinetId());
-                    map.put("doorId", mAdapter.getData().get(position).getCabinetDoorVoList().get(1).getDoorUniqueId());
-                    UiManager.INSTANCE.switcher(this, map, InquiryActivity.class);
-                } else if (view.getId() == R.id.lintThree) {
-                    map.put("cabinetId", mAdapter.getData().get(position).getCabinetDoorVoList().get(2).getCabinetId());
-                    map.put("doorId", mAdapter.getData().get(position).getCabinetDoorVoList().get(2).getDoorUniqueId());
-                    UiManager.INSTANCE.switcher(this, map, InquiryActivity.class);
-                } else if (view.getId() == R.id.lintFour) {
-                    map.put("cabinetId", mAdapter.getData().get(position).getCabinetDoorVoList().get(3).getCabinetId());
-                    map.put("doorId", mAdapter.getData().get(position).getCabinetDoorVoList().get(3).getDoorUniqueId());
-                    UiManager.INSTANCE.switcher(this, map, InquiryActivity.class);
-                } else if (view.getId() == R.id.imgViews) {
-                    map.put("cabinetId", "a");
-                    map.put("doorId", "a");
-                    UiManager.INSTANCE.switcher(this, map, InquiryActivity.class);
-                }
-            } else {
-                basicConfLog();
-            }
-        });
-    }
-
-    private void startUpdating() {
-        if (!isUpdating) {
-            isUpdating = true;
-            handlerBanner.post(updateRunnable);
-        }
-    }
-
-    private void stopUpdating() {
-        if (isUpdating) {
-            isUpdating = false;
-            handlerBanner.removeCallbacks(updateRunnable);
-        }
-    }
-
-    private void handleScanEvent(String cont) {
-        // Implementation remains similar to Kotlin version
-    }
-
-    private void registerUsbBroadcast() {
-        if (mUsbReceiver == null) {
-            IntentFilter filter = new IntentFilter();
-            filter.addAction(UsbReceiver.ACTION_USB_PERMISSION);
-            filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
-            filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
-            filter.addAction(UsbReceiver.ACTION_USB_STATE);
-            mUsbReceiver = new UsbReceiver();
-            registerReceiver(mUsbReceiver, filter);
-        }
-    }
-
     @Override
     protected void onDestroy() {
         super.onDestroy();
         unregisterReceiver(timeTickReceiver);
         try {
             timeUpdater.stopUpdating();
-            stopUpdating();
             mCountDownHandler.removeMessages(WHAT_COUNT_DOWN);
             mCountDownHandler.removeCallbacksAndMessages(null);
         } catch (Exception e) {
         }
     }
 
-    private void subAddData() {
-        mLztek = Lztek.create(this);
-        String toUpperCase = mLztek.getEthMac().toUpperCase();
-        mDeviceNum = toUpperCase.replace(":", "");
-        ApiRepository.INSTANCE.monitor(mDeviceNum)
-                .subscribe(data -> {
-                }, this::showNetError);
-    }
-
     private void basicConf() {
         ApiRepository.INSTANCE.basicConfig(ChemicalApp.subjectId)
                 .subscribe(data -> {
@@ -469,24 +366,6 @@ public class MainActivity extends BaseActivity {
         }
     }
 
-    private void throwableView(Throwable throwable) {
-        String message = null;
-        if (throwable instanceof NetException) {
-            message = throwable.getMessage() != null ? throwable.getMessage() :
-                    "接口请求失败(" + ((NetException) throwable).getCode() + ")";
-        } else if (throwable instanceof SocketTimeoutException) {
-            message = "请求超时,请稍后重试";
-        } else if (throwable instanceof ConnectException) {
-            message = "无法连接服务器,请检查网络";
-        } else if (throwable instanceof HttpException) {
-            message = "服务器繁忙,请稍后重试";
-        }
-
-        if (message != null) {
-            customDialogView(2, message);
-        }
-    }
-
     private final Handler mCountDownHandler = new Handler(Looper.getMainLooper()) {
         @Override
         public void handleMessage(Message msg) {
@@ -540,130 +419,151 @@ public class MainActivity extends BaseActivity {
         });
         timeUpdater.startUpdating();
 
-        mAdapter = new CabinetAdapter();
-        initAdapter();
+        viewBinding.last.setOnClickListener(v -> viewBinding.cabinetVP.previousPage());
+        viewBinding.next.setOnClickListener(v -> viewBinding.cabinetVP.nextPage());
 
-        viewBinding.imgLeft.setOnClickListener(v -> {
-            if (currentPosition > 0) {
-                currentPosition--;
-                recyclerView.smoothScrollToPosition(currentPosition);
-            }
-        });
-
-        viewBinding.imgRight.setOnClickListener(v -> {
-            if (currentPosition < mAdapter.getItemCount() - 1) {
-                currentPosition++;
-                recyclerView.smoothScrollToPosition(currentPosition);
-            }
-        });
 
         RelativeLayoutDebouncer.Companion.setDebouncedOnClickListener(viewBinding.inc.userLogin, 1000L, v -> {
             basicConfLog();
         });
 
         // 存储
-        viewBinding.addChemicals.setOnClickListener(v -> {
-            //新增
-            if (ChemicalApp.userData != null) {
-                if (ChemicalApp.administrators || ChemicalApp.responsibles) {
-                    planDialog = new PlanDialog(MainActivity.this, new View.OnClickListener() {
-                        @Override
-                        public void onClick(View v) {
-                            UiManager.INSTANCE.switcher(MainActivity.this, AlreadyActivity.class);
-                            planDialog.dismiss();
-                        }
-                    }, new View.OnClickListener() {
-                        @Override
-                        public void onClick(View v) {
-                            UiManager.INSTANCE.switcher(MainActivity.this, PlanAddActivity.class);
-                            planDialog.dismiss();
-                        }
-                    });
-                    planDialog.show();
+        viewBinding.addChemicals.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                //新增
+                if (ChemicalApp.userData != null) {
+                    if (ChemicalApp.administrators || ChemicalApp.responsibles) {
+                        planDialog = new PlanDialog(MainActivity.this, new View.OnClickListener() {
+                            @Override
+                            public void onClick(View v) {
+                                UiManager.INSTANCE.switcher(MainActivity.this, AlreadyActivity.class);
+                                planDialog.dismiss();
+                            }
+                        }, new View.OnClickListener() {
+                            @Override
+                            public void onClick(View v) {
+                                UiManager.INSTANCE.switcher(MainActivity.this, PlanAddActivity.class);
+                                planDialog.dismiss();
+                            }
+                        });
+                        planDialog.show();
+                    } else {
+                        customDialogView(2, "当前人员无权限");
+                    }
                 } else {
-                    customDialogView(2, "当前人员无权限");
+                    basicConfLog();
                 }
-            } else {
-                basicConfLog();
             }
         });
 
-        viewBinding.reDis.setOnClickListener(v -> {
-            if (ChemicalApp.userData != null) {
-                UiManager.INSTANCE.switcher(this, WasteChemicalsActivity.class);
-            } else {
-                basicConfLog();
+        viewBinding.reDis.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                if (ChemicalApp.userData != null) {
+                    UiManager.INSTANCE.switcher(MainActivity.this, WasteChemicalsActivity.class);
+                } else {
+                    basicConfLog();
+                }
             }
         });
 
-        viewBinding.reInq.setOnClickListener(v -> {
-            Map<String, Object> map = new HashMap<>();
-            map.put("logIn", ChemicalApp.userData != null ? 1 : 0);
-            map.put("cabinetId", "a");
-            map.put("doorId", "a");
-            UiManager.INSTANCE.switcher(this, map, InquiryActivity.class);
+        viewBinding.reInq.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("logIn", ChemicalApp.userData != null ? 1 : 0);
+                map.put("cabinetId", "a");
+                map.put("doorId", "a");
+                UiManager.INSTANCE.switcher(MainActivity.this, map, InquiryActivity.class);
+            }
         });
 
-        viewBinding.reCla.setOnClickListener(v -> {
-            if (ChemicalApp.userData != null) {
-                UiManager.INSTANCE.switcher(this, UseActivity.class);
-            } else {
-                basicConfLog();
+        viewBinding.reCla.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                if (ChemicalApp.userData != null) {
+                    UiManager.INSTANCE.switcher(MainActivity.this, UseActivity.class);
+                } else {
+                    basicConfLog();
+                }
             }
         });
 
-        viewBinding.reRet.setOnClickListener(v -> {
-            if (ChemicalApp.userData != null) {
-                UiManager.INSTANCE.switcher(this, ChemicalsAlsoActivity.class);
-            } else {
-                basicConfLog();
+        viewBinding.reRet.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                if (ChemicalApp.userData != null) {
+                    UiManager.INSTANCE.switcher(MainActivity.this, ChemicalsAlsoActivity.class);
+                } else {
+                    basicConfLog();
+                }
             }
         });
 
-        viewBinding.rlLedger.setOnClickListener(v -> {
-            if (ChemicalApp.userData != null) {
-                UiManager.INSTANCE.switcher(this, LedgerActivity.class);
-            } else {
-                basicConfLog();
+        viewBinding.rlLedger.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                if (ChemicalApp.userData != null) {
+                    UiManager.INSTANCE.switcher(MainActivity.this, LedgerActivity.class);
+                } else {
+                    basicConfLog();
+                }
             }
         });
 
-        viewBinding.reLedger.setOnClickListener(v -> {
-            if (ChemicalApp.userData != null) {
-                UiManager.INSTANCE.switcher(this, ChemicalLabelingActivity.class);
-            } else {
-                basicConfLog();
+        viewBinding.reLedger.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                if (ChemicalApp.userData != null) {
+                    UiManager.INSTANCE.switcher(MainActivity.this, ChemicalLabelingActivity.class);
+                } else {
+                    basicConfLog();
+                }
             }
         });
 
-        viewBinding.rlWarning.setOnClickListener(v -> {
-            if (ChemicalApp.userData != null) {
-                UiManager.INSTANCE.switcher(this, WarningEventsActivity.class);
-            } else {
-                basicConfLog();
+        viewBinding.rlWarning.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                if (ChemicalApp.userData != null) {
+                    UiManager.INSTANCE.switcher(MainActivity.this, WarningEventsActivity.class);
+                } else {
+                    basicConfLog();
+                }
             }
         });
 
-        viewBinding.rlDem.setOnClickListener(v -> {
-            UiManager.INSTANCE.switcher(this, MsdsActivity.class);
+        viewBinding.rlDem.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                UiManager.INSTANCE.switcher(MainActivity.this, MsdsActivity.class);
+            }
         });
 
-        viewBinding.inc.tvOutLogin.setOnClickListener(v -> {
-            ChemicalApp.userData = null;
-            ChemicalApp.subjectId = null;
-            HttpClient.INSTANCE.setToken(null);
-            ActivityUtils.startActivity(StartActivity.class);
+        viewBinding.inc.tvOutLogin.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                ChemicalApp.userData = null;
+                ChemicalApp.subjectId = null;
+                HttpClient.INSTANCE.setToken(null);
+                ActivityUtils.startActivity(StartActivity.class);
+            }
         });
 
         basicConf();
 
-        viewBinding.caozuoRL.setOnClickListener(v -> {
-            viewBinding.caozuoRL.setVisibility(View.GONE);
-            viewBinding.caozuoQrRL.setVisibility(View.VISIBLE);
-            viewBinding.caozuoQrRL.postDelayed(() -> {
-                viewBinding.caozuoRL.setVisibility(View.VISIBLE);
-                viewBinding.caozuoQrRL.setVisibility(View.GONE);
-            }, 1000 * 60);
+
+        viewBinding.caozuoRL.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                viewBinding.caozuoRL.setVisibility(View.GONE);
+                viewBinding.caozuoQrRL.setVisibility(View.VISIBLE);
+                viewBinding.caozuoQrRL.postDelayed(() -> {
+                    viewBinding.caozuoRL.setVisibility(View.VISIBLE);
+                    viewBinding.caozuoQrRL.setVisibility(View.GONE);
+                }, 1000 * 60);
+            }
         });
 
         viewBinding.caozuoRL.post(() -> {

+ 1 - 1
app/src/main/java/xn/hxp/ui/SettingActivity.java

@@ -73,7 +73,7 @@ public class SettingActivity extends BaseActivity {
         }
         // 测试地址输入
         binding.httpUriTestBT.setOnClickListener(v -> binding.httpUriET.setText("http://192.168.1.8/api/"));
-        // 西农地址输入
+        // 线上地址输入
         binding.httpUriXnBT.setOnClickListener(v -> binding.httpUriET.setText("http://172.16.0.65/api/"));
         // 蓝牙扫描
         binding.scanBT.setOnClickListener(v -> {

+ 2 - 211
app/src/main/java/xn/hxp/ui/adapter/CabinetAdapter.kt

@@ -28,6 +28,7 @@ class CabinetAdapter : BaseQuickAdapter<RuleBean, BaseViewHolder>(R.layout.item_
         when (cabinetDoorVoList.size) {  //当前每一个柜门
             1 -> {
                 holder.getView<LinearLayout>(R.id.lingOne).visibility = View.VISIBLE
+                holder.getView<LinearLayout>(R.id.lintTwo).visibility = View.GONE
                 holder.setText(R.id.doorNameOne, "${cabinetDoorVoList[0].doorName}")
                 holder.setText(R.id.num, "${cabinetDoorVoList[0].stockNum}")
                 val size = cabinetDoorVoList[0].cabinetAdminVoList!!.size  //管理员信息
@@ -56,158 +57,8 @@ class CabinetAdapter : BaseQuickAdapter<RuleBean, BaseViewHolder>(R.layout.item_
                     )
                 }
             }
-            2 -> {
-                holder.getView<LinearLayout>(R.id.lingOne).visibility = View.VISIBLE
-                holder.setText(R.id.doorNameOne, "${cabinetDoorVoList[0].doorName}")
-                holder.setText(R.id.num, "${cabinetDoorVoList[0].stockNum}")
-                val size = cabinetDoorVoList[0].cabinetAdminVoList!!.size  //管理员信息
-                if (size <= 2) {
-                    if (size == 1) {
-                        val userName = cabinetDoorVoList[0].cabinetAdminVoList!![0].userName
-                        holder.setText(R.id.teacher1, userName)
-                    } else if (size == 2) {
-                        holder.setText(
-                            R.id.teacher1,
-                            cabinetDoorVoList[0].cabinetAdminVoList!![0].userName
-                        )
-                        holder.setText(
-                            R.id.teacher2,
-                            cabinetDoorVoList[0].cabinetAdminVoList!![1].userName
-                        )
-                    }
-                } else {
-                    holder.setText(
-                        R.id.teacher1,
-                        cabinetDoorVoList[0].cabinetAdminVoList!![0].userName
-                    )
-                    holder.setText(
-                        R.id.teacher2,
-                        cabinetDoorVoList[0].cabinetAdminVoList!![1].userName
-                    )
-                }
-
-
-                holder.getView<LinearLayout>(R.id.lintTwo).visibility = View.VISIBLE
-                holder.setText(R.id.doorNameTwo, "${cabinetDoorVoList[1].doorName}")
-                holder.setText(R.id.numTow, "${cabinetDoorVoList[1].stockNum}")
-                val size1 = cabinetDoorVoList[1].cabinetAdminVoList!!.size  //管理员信息
-                if (size1 <= 2) {
-                    if (size1 == 1) {
-                        val userName = cabinetDoorVoList[1].cabinetAdminVoList!![0].userName
-                        holder.setText(R.id.teacher3, userName)
-                    } else if (size1 == 2) {
-                        holder.setText(
-                            R.id.teacher3,
-                            cabinetDoorVoList[1].cabinetAdminVoList!![0].userName
-                        )
-                        holder.setText(
-                            R.id.teacher4,
-                            cabinetDoorVoList[1].cabinetAdminVoList!![1].userName
-                        )
-                    }
-                } else {
-                    holder.setText(
-                        R.id.teacher3,
-                        cabinetDoorVoList[1].cabinetAdminVoList!![0].userName
-                    )
-                    holder.setText(
-                        R.id.teacher4,
-                        cabinetDoorVoList[1].cabinetAdminVoList!![1].userName
-                    )
-                }
-            }
-
-            3 -> {
-                holder.getView<LinearLayout>(R.id.lingOne).visibility = View.VISIBLE
-                holder.setText(R.id.doorNameOne, "${cabinetDoorVoList[0].doorName}")
-                holder.setText(R.id.num, "${cabinetDoorVoList[0].stockNum}")
-                val size = cabinetDoorVoList[0].cabinetAdminVoList!!.size  //管理员信息
-                if (size <= 2) {
-                    if (size == 1) {
-                        val userName = cabinetDoorVoList[0].cabinetAdminVoList!![0].userName
-                        holder.setText(R.id.teacher1, userName)
-                    } else if (size == 2) {
-                        holder.setText(
-                            R.id.teacher1,
-                            cabinetDoorVoList[0].cabinetAdminVoList!![0].userName
-                        )
-                        holder.setText(
-                            R.id.teacher2,
-                            cabinetDoorVoList[0].cabinetAdminVoList!![1].userName
-                        )
-                    }
-                } else {
-                    holder.setText(
-                        R.id.teacher1,
-                        cabinetDoorVoList[0].cabinetAdminVoList!![0].userName
-                    )
-                    holder.setText(
-                        R.id.teacher2,
-                        cabinetDoorVoList[0].cabinetAdminVoList!![1].userName
-                    )
-                }
-
-
-                holder.getView<LinearLayout>(R.id.lintTwo).visibility = View.VISIBLE
-                holder.setText(R.id.doorNameTwo, "${cabinetDoorVoList[1].doorName}")
-                holder.setText(R.id.numTow, "${cabinetDoorVoList[1].stockNum}")
-                val size1 = cabinetDoorVoList[1].cabinetAdminVoList!!.size  //管理员信息
-                if (size1 <= 2) {
-                    if (size1 == 1) {
-                        val userName = cabinetDoorVoList[1].cabinetAdminVoList!![0].userName
-                        holder.setText(R.id.teacher3, userName)
-                    } else if (size1 == 2) {
-                        holder.setText(
-                            R.id.teacher3,
-                            cabinetDoorVoList[1].cabinetAdminVoList!![0].userName
-                        )
-                        holder.setText(
-                            R.id.teacher4,
-                            cabinetDoorVoList[1].cabinetAdminVoList!![1].userName
-                        )
-                    }
-                } else {
-                    holder.setText(
-                        R.id.teacher3,
-                        cabinetDoorVoList[1].cabinetAdminVoList!![0].userName
-                    )
-                    holder.setText(
-                        R.id.teacher4,
-                        cabinetDoorVoList[1].cabinetAdminVoList!![1].userName
-                    )
-                }
 
-                holder.getView<LinearLayout>(R.id.lintThree).visibility = View.VISIBLE
-                holder.setText(R.id.doorNameThree, "${cabinetDoorVoList[2].doorName}")
-                holder.setText(R.id.numThree, "${cabinetDoorVoList[2].stockNum}")
-                val size2 = cabinetDoorVoList[2].cabinetAdminVoList!!.size  //管理员信息
-                if (size2 <= 2) {
-                    if (size2 == 1) {
-                        val userName = cabinetDoorVoList[2].cabinetAdminVoList!![0].userName
-                        holder.setText(R.id.teacher5, userName)
-                    } else if (size2 == 2) {
-                        holder.setText(
-                            R.id.teacher5,
-                            cabinetDoorVoList[2].cabinetAdminVoList!![0].userName
-                        )
-                        holder.setText(
-                            R.id.teacher6,
-                            cabinetDoorVoList[2].cabinetAdminVoList!![1].userName
-                        )
-                    }
-                } else {
-                    holder.setText(
-                        R.id.teacher5,
-                        cabinetDoorVoList[2].cabinetAdminVoList!![0].userName
-                    )
-                    holder.setText(
-                        R.id.teacher6,
-                        cabinetDoorVoList[2].cabinetAdminVoList!![1].userName
-                    )
-                }
-            }
-
-            4 -> {
+            2 -> {
                 holder.getView<LinearLayout>(R.id.lingOne).visibility = View.VISIBLE
                 holder.setText(R.id.doorNameOne, "${cabinetDoorVoList[0].doorName}")
                 holder.setText(R.id.num, "${cabinetDoorVoList[0].stockNum}")
@@ -266,66 +117,6 @@ class CabinetAdapter : BaseQuickAdapter<RuleBean, BaseViewHolder>(R.layout.item_
                         cabinetDoorVoList[1].cabinetAdminVoList!![1].userName
                     )
                 }
-
-                holder.getView<LinearLayout>(R.id.lintThree).visibility = View.VISIBLE
-                holder.setText(R.id.doorNameThree, "${cabinetDoorVoList[2].doorName}")
-                holder.setText(R.id.numThree, "${cabinetDoorVoList[2].stockNum}")
-                val size2 = cabinetDoorVoList[2].cabinetAdminVoList!!.size  //管理员信息
-                if (size2 <= 2) {
-                    if (size2 == 1) {
-                        val userName = cabinetDoorVoList[2].cabinetAdminVoList!![0].userName
-                        holder.setText(R.id.teacher5, userName)
-                    } else if (size2 == 2) {
-                        holder.setText(
-                            R.id.teacher5,
-                            cabinetDoorVoList[2].cabinetAdminVoList!![0].userName
-                        )
-                        holder.setText(
-                            R.id.teacher6,
-                            cabinetDoorVoList[2].cabinetAdminVoList!![1].userName
-                        )
-                    }
-                } else {
-                    holder.setText(
-                        R.id.teacher5,
-                        cabinetDoorVoList[2].cabinetAdminVoList!![0].userName
-                    )
-                    holder.setText(
-                        R.id.teacher6,
-                        cabinetDoorVoList[2].cabinetAdminVoList!![1].userName
-                    )
-                }
-
-
-                holder.getView<LinearLayout>(R.id.lintFour).visibility = View.VISIBLE
-                holder.setText(R.id.four, "${cabinetDoorVoList[3].doorName}")
-                holder.setText(R.id.numFour, "${cabinetDoorVoList[3].stockNum}")
-                val size3 = cabinetDoorVoList[3].cabinetAdminVoList!!.size  //管理员信息
-                if (size3 <= 2) {
-                    if (size3 == 1) {
-                        val userName = cabinetDoorVoList[3].cabinetAdminVoList!![0].userName
-                        holder.setText(R.id.teacher7, userName)
-                    } else if (size3 == 2) {
-                        holder.setText(
-                            R.id.teacher7,
-                            cabinetDoorVoList[3].cabinetAdminVoList!![0].userName
-                        )
-                        holder.setText(
-                            R.id.teacher8,
-                            cabinetDoorVoList[3].cabinetAdminVoList!![1].userName
-                        )
-                    }
-                } else {
-                    holder.setText(
-                        R.id.teacher7,
-                        cabinetDoorVoList[3].cabinetAdminVoList!![0].userName
-                    )
-                    holder.setText(
-                        R.id.teacher8,
-                        cabinetDoorVoList[3].cabinetAdminVoList!![1].userName
-                    )
-                }
-
             }
 
             else -> {

+ 133 - 0
app/src/main/java/xn/hxp/ui/adapter/CabinetBannerAdapter.java

@@ -0,0 +1,133 @@
+package xn.hxp.ui.adapter;
+
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.RelativeLayout;
+
+import androidx.appcompat.widget.AppCompatTextView;
+
+import com.rc.httpcore.bean.AdminVoListBean;
+import com.rc.httpcore.bean.CabinetDoorVo;
+import com.rc.httpcore.bean.RuleBean;
+import com.zhpan.bannerview.BaseBannerAdapter;
+import com.zhpan.bannerview.BaseViewHolder;
+import com.zhpan.bannerview.utils.BannerUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import xn.hxp.R;
+import xn.hxp.ui.inquiry.InquiryActivity;
+import xn.hxp.utils.UiManager;
+
+public class CabinetBannerAdapter extends BaseBannerAdapter<RuleBean> {
+    private final StringBuffer stringBuffer = new StringBuffer();
+
+    @Override
+    protected void bindData(BaseViewHolder<RuleBean> holder, RuleBean data, int position, int pageSize) {
+        int adapterPosition = holder.getAdapterPosition();
+        int realPosition = BannerUtils.getRealPosition(position, adapterPosition);
+
+        List<CabinetDoorVo> cabinetDoorList = data.getCabinetDoorVoList();
+        // 柜门名字
+        AppCompatTextView cabinetNameTV = holder.findViewById(R.id.cabinetName);
+        cabinetNameTV.setText(data.getCabinetName());
+        // 左柜门布局
+        RelativeLayout doorRLL = holder.findViewById(R.id.doorRLL);
+        doorRLL.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                CabinetDoorVo cabinetDoor = cabinetDoorList.get(0);
+                Map<String, Object> map = new HashMap<>();
+                map.put("logIn", 1);
+                map.put("cabinetId", cabinetDoor.getCabinetId());
+                map.put("doorId", cabinetDoor.getDoorUniqueId());
+                UiManager.INSTANCE.switcher(holder.itemView.getContext(), map, InquiryActivity.class);
+            }
+        });
+        // 右柜门布局
+        RelativeLayout doorRLR = holder.findViewById(R.id.doorRLR);
+        doorRLR.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                CabinetDoorVo cabinetDoor = cabinetDoorList.get(1);
+                Map<String, Object> map = new HashMap<>();
+                map.put("cabinetId", cabinetDoor.getCabinetId());
+                map.put("doorId", cabinetDoor.getDoorUniqueId());
+                UiManager.INSTANCE.switcher(holder.itemView.getContext(), map, InquiryActivity.class);
+            }
+        });
+        if (null != cabinetDoorList && !cabinetDoorList.isEmpty()) {
+            // 左柜门
+            doorRLL.setVisibility(View.VISIBLE);
+            CabinetDoorVo cabinetDoorL = cabinetDoorList.get(0);
+            // 左柜门名字
+            AppCompatTextView doorName1 = holder.findViewById(R.id.doorName1);
+            doorName1.setText(TextUtils.isEmpty(cabinetDoorL.getDoorName()) ? "" : cabinetDoorL.getDoorName());
+            // 左柜门化学品总数
+            AppCompatTextView doorHxpSize1 = holder.findViewById(R.id.doorHxpSize1);
+            doorHxpSize1.setText(String.valueOf(cabinetDoorL.getStockNum()));
+            // 左柜门管理员
+            AppCompatTextView doorAdmin1 = holder.findViewById(R.id.doorAdmin1);
+            List<AdminVoListBean> cabinetDoorAdminLList = cabinetDoorL.getCabinetAdminVoList();
+            if (null != cabinetDoorAdminLList && !cabinetDoorAdminLList.isEmpty()) {
+                stringBuffer.setLength(0);
+                for (int i = 0; i < cabinetDoorAdminLList.size(); i++) {
+                    AdminVoListBean cabinetDoorAdmin = cabinetDoorAdminLList.get(i);
+                    String userName = cabinetDoorAdmin.getUserName();
+                    if (!TextUtils.isEmpty(userName)) {
+                        stringBuffer.append(userName);
+                        if (i != cabinetDoorAdminLList.size() - 1) {  // 不是最后一个元素
+                            stringBuffer.append("\n");  // 添加分隔符
+                        }
+                    }
+                }
+                doorAdmin1.setText(stringBuffer.toString());
+            } else {
+                doorAdmin1.setText("");
+            }
+
+            if (cabinetDoorList.size() > 1) {
+                // 右柜门
+                doorRLR.setVisibility(View.VISIBLE);
+                CabinetDoorVo cabinetDoorR = cabinetDoorList.get(1);
+                // 右柜门名字
+                AppCompatTextView doorName2 = holder.findViewById(R.id.doorName2);
+                doorName2.setText(TextUtils.isEmpty(cabinetDoorR.getDoorName()) ? "" : cabinetDoorR.getDoorName());
+                // 右柜门化学品总数
+                AppCompatTextView doorHxpSize2 = holder.findViewById(R.id.doorHxpSize2);
+                doorHxpSize2.setText(String.valueOf(cabinetDoorR.getStockNum()));
+                // 右柜门管理员
+                AppCompatTextView doorAdmin2 = holder.findViewById(R.id.doorAdmin2);
+                List<AdminVoListBean> cabinetDoorAdminRList = cabinetDoorR.getCabinetAdminVoList();
+                if (null != cabinetDoorAdminRList && !cabinetDoorAdminRList.isEmpty()) {
+                    stringBuffer.setLength(0);
+                    for (int i = 0; i < cabinetDoorAdminRList.size(); i++) {
+                        AdminVoListBean cabinetDoorAdmin = cabinetDoorAdminRList.get(i);
+                        String userName = cabinetDoorAdmin.getUserName();
+                        if (!TextUtils.isEmpty(userName)) {
+                            stringBuffer.append(userName);
+                            if (i != cabinetDoorAdminRList.size() - 1) {  // 不是最后一个元素
+                                stringBuffer.append("\n");  // 添加分隔符
+                            }
+                        }
+                    }
+                    doorAdmin2.setText(stringBuffer.toString());
+                } else {
+                    doorAdmin2.setText("");
+                }
+            } else {
+                doorRLR.setVisibility(View.GONE);
+            }
+        } else {
+            doorRLL.setVisibility(View.GONE);
+            doorRLR.setVisibility(View.GONE);
+        }
+    }
+
+    @Override
+    public int getLayoutId(int viewType) {
+        return R.layout.fragment_main_cabinet;
+    }
+}

+ 7 - 4
app/src/main/java/xn/hxp/ui/plan/PlanAddData.java

@@ -1,5 +1,7 @@
 package xn.hxp.ui.plan;
 
+import com.rc.httpcore.bean.HxpChemicalVo;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -10,14 +12,15 @@ public class PlanAddData {
     private List<HxpCabinetVo> cabinetList;
     private List<HxpCabinetDoorVo> doorList;
 
-    // 国睿申领未入库需要入库的化学品ID
-    private List<String> autoChemicalList = new ArrayList<>();
+    // 国睿申领未入库需要入库的化学品
+    private List<HxpChemicalVo> autoChemicalList = new ArrayList<>();
+
 
-    public List<String> getAutoChemicalList() {
+    public List<HxpChemicalVo> getAutoChemicalList() {
         return autoChemicalList;
     }
 
-    public void setAutoChemicalList(List<String> autoChemicalList) {
+    public void setAutoChemicalList(List<HxpChemicalVo> autoChemicalList) {
         this.autoChemicalList = autoChemicalList;
     }
 

+ 168 - 176
app/src/main/java/xn/hxp/ui/plan/already/AlreadyActivity.java

@@ -5,7 +5,6 @@ import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
-import android.widget.RadioGroup;
 
 import androidx.activity.result.ActivityResult;
 import androidx.activity.result.ActivityResultCallback;
@@ -20,7 +19,6 @@ import com.blankj.utilcode.util.ThreadUtils;
 import com.blankj.utilcode.util.TimeUtils;
 import com.blankj.utilcode.util.ToastUtils;
 import com.bumptech.glide.Glide;
-import com.google.gson.reflect.TypeToken;
 import com.kongzue.dialogx.dialogs.PopTip;
 import com.rc.core.ui.activity.BaseActivity;
 import com.rc.httpcore.HttpConfig;
@@ -68,14 +66,11 @@ public class AlreadyActivity extends BaseActivity {
     private int page = 1; // 页数
     private int pages = Integer.MAX_VALUE;
     private int type = 0; // 0:与自己相关 1:其它
-    private String applyOrder; // 申领单号
     private String applyUserName;// 申领人
+    private String applyOrder; // 申领单号
     private String topicUserName;// 归属人
 
-    private List<String> applicantList;// 申领人选择列
-    private List<String> ownerList;// 归属人选择列
-    private List<String> applyOrderNumberList;// 申领单号选择列
-
+    private ApplyOrderBean applyOrderBean;
     private ActivityResultLauncher<Intent> intentActivityResultLauncher;
 
     @Override
@@ -163,55 +158,66 @@ public class AlreadyActivity extends BaseActivity {
             }
         });
         // 已申领类型选择
-        binding.typeRG.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(RadioGroup group, int checkedId) {
-                // 与我相关
-                if (checkedId == binding.relatedRB.getId()) {
-                    binding.otherRB.setText("其它");
-                    type = 0;
-                }
-                // 其它
-                else if (checkedId == binding.otherRB.getId()) {
-                    binding.relatedRB.setText("与我相关");
-                    type = 1;
-                }
-                getHxpStockWait(true);
+        binding.typeRG.setOnCheckedChangeListener((group, checkedId) -> {
+            // 与我相关
+            if (checkedId == binding.relatedRB.getId()) {
+                binding.otherRB.setText("其它");
+                type = 0;
+            }
+            // 其它
+            else if (checkedId == binding.otherRB.getId()) {
+                binding.relatedRB.setText("与我相关");
+                type = 1;
             }
+            applyOrder = "";
+            applyUserName = "";
+            topicUserName = "";
+            binding.applicantCodeSearchTV.setText("申领单号");
+            binding.applicantSearchTV.setText("申领人");
+            binding.belongSearchTV.setText("归属人");
+            getHxpStockWait(true);
         });
         // 根据申领单号查询
-        binding.applicantCodeSearchRL.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (null != applyOrderNumberList) {
-                    new SelectAlreadyDialog(AlreadyActivity.this, "选择申领单号", applyOrderNumberList, new SelectAlreadyDialog.SelectedListener() {
-                        @Override
-                        public void selected(String string) {
-                            applyOrder = string;
-                            binding.applicantCodeSearchTV.setText(applyOrder);
-                            binding.applicantCodeSearchTV.setSelected(true);
-                            getHxpStockWait(true);
-                        }
-
-                        @Override
-                        public void clear() {
-                            applyOrder = "";
-                            binding.applicantCodeSearchTV.setText("申领单号");
-                            getHxpStockWait(true);
-                        }
-                    }).show();
-                } else {
-                    showLoading("申领单号查询中...");
-                    getApplyList();
-                }
+        binding.applicantCodeSearchRL.setOnClickListener(v -> {
+            List<String> applyOrderNumberList;
+            if (type == 0) {
+                applyOrderNumberList = applyOrderBean.getTypeOwner().getApplyOrderNumbers();
+            } else {
+                applyOrderNumberList = applyOrderBean.getTypeOther().getApplyOrderNumbers();
+            }
+            if (null != applyOrderNumberList && !applyOrderNumberList.isEmpty()) {
+                new SelectAlreadyDialog(AlreadyActivity.this, "选择申领单号", applyOrderNumberList, new SelectAlreadyDialog.SelectedListener() {
+                    @Override
+                    public void selected(String string) {
+                        applyOrder = string;
+                        binding.applicantCodeSearchTV.setText(applyOrder);
+                        binding.applicantCodeSearchTV.setSelected(true);
+                        getHxpStockWait(true);
+                    }
 
+                    @Override
+                    public void clear() {
+                        applyOrder = "";
+                        binding.applicantCodeSearchTV.setText("申领单号");
+                        getHxpStockWait(true);
+                    }
+                }).show();
+            } else {
+                showToast("暂无数据");
             }
+
         });
         // 根据申领人查询
         binding.applicantSearchRL.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                if (null != applicantList) {
+                List<String> applicantList;
+                if (type == 0) {
+                    applicantList = applyOrderBean.getTypeOwner().getApplicants();
+                } else {
+                    applicantList = applyOrderBean.getTypeOther().getApplicants();
+                }
+                if (null != applicantList && !applicantList.isEmpty()) {
                     new SelectAlreadyDialog(AlreadyActivity.this, "选择申领人", applicantList, new SelectAlreadyDialog.SelectedListener() {
                         @Override
                         public void selected(String string) {
@@ -229,8 +235,7 @@ public class AlreadyActivity extends BaseActivity {
                         }
                     }).show();
                 } else {
-                    showLoading("申领人查询中...");
-                    getApplyList();
+                    showToast("暂无数据");
                 }
             }
         });
@@ -238,7 +243,13 @@ public class AlreadyActivity extends BaseActivity {
         binding.belongSearchRL.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                if (null != ownerList) {
+                List<String> ownerList;
+                if (type == 0) {
+                    ownerList = applyOrderBean.getTypeOwner().getOwners();
+                } else {
+                    ownerList = applyOrderBean.getTypeOther().getOwners();
+                }
+                if (null != ownerList && !ownerList.isEmpty()) {
                     new SelectAlreadyDialog(AlreadyActivity.this, "选择归属人", ownerList, new SelectAlreadyDialog.SelectedListener() {
                         @Override
                         public void selected(String string) {
@@ -256,139 +267,127 @@ public class AlreadyActivity extends BaseActivity {
                         }
                     }).show();
                 } else {
-                    showLoading("归属人查询中...");
-                    getApplyList();
+                    showToast("暂无数据");
                 }
             }
         });
         // 一键入库
-        ClickUtils.applySingleDebouncing(binding.subAdd, new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
+        ClickUtils.applySingleDebouncing(binding.subAdd, v -> {
 
-                showLoading("处理中...");
-                ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<PlanAddData>() {
-                    @Override
-                    public PlanAddData doInBackground() throws Throwable {
-                        List<HxpChemicalVo> autoChemicalList = new ArrayList<>();
-                        List<String> autoChemicalIdList = new ArrayList<>();
-                        for (int i = 0; i < hxpChemicalVoList.size(); i++) {
-                            HxpChemicalVo recordsBean = hxpChemicalVoList.get(i);
-                            if (recordsBean.isSelect()) {
-                                autoChemicalIdList.add(recordsBean.getWaitId());
-                                autoChemicalList.add(recordsBean);
-                            }
+            showLoading("处理中...");
+            ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<PlanAddData>() {
+                @Override
+                public PlanAddData doInBackground() throws Throwable {
+                    List<HxpChemicalVo> autoChemicalList = new ArrayList<>();
+                    for (int i = 0; i < hxpChemicalVoList.size(); i++) {
+                        HxpChemicalVo recordsBean = hxpChemicalVoList.get(i);
+                        if (recordsBean.isSelect()) {
+                            autoChemicalList.add(recordsBean);
                         }
-                        // 为需要自动入库的化学品创建清单
-                        AlreadyTool.INSTANCE.updateHxpInventoryList(autoChemicalList);
-                        HxpDoorDAO hxpDoorDAO = RoomTool.getInstance().hxpDoorDAO();
-                        HxpInventoryDAO hxpInventoryDAO = RoomTool.getInstance().hxpInventoryDAO();
-                        HxpCabinetDAO hxpCabinetDAO = RoomTool.getInstance().hxpCabinetDAO();
-                        List<InventoryItemBean> inventoryItemBeanList = hxpInventoryDAO.getAll();
-                        List<HxpCabinetVo> cabinetList = hxpCabinetDAO.getAll();
-                        List<HxpCabinetDoorVo> doorList = hxpDoorDAO.getAll();
-                        // 删除清单外的柜门
-                        for (int i = 0; i < doorList.size(); i++) {
-                            HxpCabinetDoorVo doorVo = doorList.get(i);
-                            boolean hasDoorId = false;
-                            for (int j = 0; j < inventoryItemBeanList.size(); j++) {
-                                InventoryItemBean inventoryItemBean = inventoryItemBeanList.get(j);
-                                if (inventoryItemBean.getDoorId() == doorVo.getDoorId()) {
-                                    hasDoorId = true;
-                                    break;
-                                }
-                            }
-                            if (!hasDoorId) {
-                                doorList.remove(i);
-                                i--;
+                    }
+                    // 为需要自动入库的化学品创建清单
+                    AlreadyTool.INSTANCE.updateHxpInventoryList(autoChemicalList);
+                    HxpDoorDAO hxpDoorDAO = RoomTool.getInstance().hxpDoorDAO();
+                    HxpInventoryDAO hxpInventoryDAO = RoomTool.getInstance().hxpInventoryDAO();
+                    HxpCabinetDAO hxpCabinetDAO = RoomTool.getInstance().hxpCabinetDAO();
+                    List<InventoryItemBean> inventoryItemBeanList = hxpInventoryDAO.getAll();
+                    List<HxpCabinetVo> cabinetList = hxpCabinetDAO.getAll();
+                    List<HxpCabinetDoorVo> doorList = hxpDoorDAO.getAll();
+                    // 删除清单外的柜门
+                    for (int i = 0; i < doorList.size(); i++) {
+                        HxpCabinetDoorVo doorVo = doorList.get(i);
+                        boolean hasDoorId = false;
+                        for (int j = 0; j < inventoryItemBeanList.size(); j++) {
+                            InventoryItemBean inventoryItemBean = inventoryItemBeanList.get(j);
+                            if (inventoryItemBean.getDoorId() == doorVo.getDoorId()) {
+                                hasDoorId = true;
+                                break;
                             }
-
                         }
-                        // 删除没有智能锁的柜门
-                        Iterator<HxpCabinetDoorVo> doorVoIterator = doorList.iterator();
-                        while (doorVoIterator.hasNext()) {
-                            HxpCabinetDoorVo doorVo = doorVoIterator.next();
-                            List<HxpCabinetLockVo> hxpCabinetLockVoList = doorVo.getCabinetLockVoList();
-                            if (null == hxpCabinetLockVoList || hxpCabinetLockVoList.isEmpty()) {
+                        if (!hasDoorId) {
+                            doorList.remove(i);
+                            i--;
+                        }
+
+                    }
+                    // 删除没有智能锁的柜门
+                    Iterator<HxpCabinetDoorVo> doorVoIterator = doorList.iterator();
+                    while (doorVoIterator.hasNext()) {
+                        HxpCabinetDoorVo doorVo = doorVoIterator.next();
+                        List<HxpCabinetLockVo> hxpCabinetLockVoList = doorVo.getCabinetLockVoList();
+                        if (null == hxpCabinetLockVoList || hxpCabinetLockVoList.isEmpty()) {
+                            doorVoIterator.remove();
+                        } else {
+                            HxpCabinetLockVo cabinetLockVo = hxpCabinetLockVoList.get(0);
+                            if (2 != cabinetLockVo.getUnlockingMethod()) {
                                 doorVoIterator.remove();
-                            } else {
-                                HxpCabinetLockVo cabinetLockVo = hxpCabinetLockVoList.get(0);
-                                if (2 != cabinetLockVo.getUnlockingMethod()) {
-                                    doorVoIterator.remove();
-                                }
                             }
                         }
-                        // 删除不需要开门的柜子
-                        Iterator<HxpCabinetVo> cabinetVoIterator = cabinetList.iterator();
-                        while (cabinetVoIterator.hasNext()) {
-                            HxpCabinetVo cabinetVo = cabinetVoIterator.next();
-                            boolean hasDoor = false;
-                            for (int i = 0; i < doorList.size(); i++) {
-                                HxpCabinetDoorVo doorVo = doorList.get(i);
-                                if (cabinetVo.getCabinetId() == doorVo.getCabinetId()) {
-                                    hasDoor = true;
-                                    break;
-                                }
-                            }
-                            if (!hasDoor) {
-                                cabinetVoIterator.remove();
+                    }
+                    // 删除不需要开门的柜子
+                    Iterator<HxpCabinetVo> cabinetVoIterator = cabinetList.iterator();
+                    while (cabinetVoIterator.hasNext()) {
+                        HxpCabinetVo cabinetVo = cabinetVoIterator.next();
+                        boolean hasDoor = false;
+                        for (int i = 0; i < doorList.size(); i++) {
+                            HxpCabinetDoorVo doorVo = doorList.get(i);
+                            if (cabinetVo.getCabinetId() == doorVo.getCabinetId()) {
+                                hasDoor = true;
+                                break;
                             }
                         }
-                        PlanAddData planAddData = new PlanAddData();
-                        planAddData.setCabinetList(cabinetList);
-                        planAddData.setDoorList(doorList);
-                        planAddData.setAutoChemicalList(autoChemicalIdList);
-                        return planAddData;
+                        if (!hasDoor) {
+                            cabinetVoIterator.remove();
+                        }
                     }
+                    PlanAddData planAddData = new PlanAddData();
+                    planAddData.setCabinetList(cabinetList);
+                    planAddData.setDoorList(doorList);
+                    planAddData.setAutoChemicalList(autoChemicalList);
+                    return planAddData;
+                }
 
-                    @Override
-                    public void onSuccess(PlanAddData planAddData) {
-                        dismissLoading();
-                        LogUtils.json(planAddData);
-                        List<HxpCabinetVo> cabinetList = planAddData.getCabinetList();
-                        List<HxpCabinetDoorVo> doorList = planAddData.getDoorList();
-                        LogUtils.d("需要开锁", cabinetList.size(), doorList.size());
-                        // 不需要开门
-                        if (cabinetList.isEmpty() || doorList.isEmpty()) {
-                            autoSave(planAddData);
-                            return;
-                        }
-                        String json = GsonUtils.toJson(planAddData);
-                        Intent intent = new Intent(AlreadyActivity.this, UnlockActivity.class);
-                        intent.putExtra("data", json);
-                        intent.putExtra("isAuto", true);
-                        startActivity(intent);
-                        finish();
+                @Override
+                public void onSuccess(PlanAddData planAddData) {
+                    dismissLoading();
+                    LogUtils.json(planAddData);
+                    List<HxpCabinetVo> cabinetList = planAddData.getCabinetList();
+                    List<HxpCabinetDoorVo> doorList = planAddData.getDoorList();
+                    LogUtils.d("需要开锁", cabinetList.size(), doorList.size());
+                    // 不需要开门
+                    if (cabinetList.isEmpty() || doorList.isEmpty()) {
+                        autoSave(planAddData);
+                        return;
                     }
-                });
-            }
+                    String json = GsonUtils.toJson(planAddData);
+                    Intent intent = new Intent(AlreadyActivity.this, UnlockActivity.class);
+                    intent.putExtra("data", json);
+                    intent.putExtra("isAuto", true);
+                    startActivity(intent);
+                    finish();
+                }
+            });
         });
 
         // 上一页
-        binding.lastPage.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                int last = page - 1;
-                if (last < 1) {
-                    showToast("没有更多数据!");
-                    return;
-                }
-                page = last;
-                getHxpStockWait(false);
+        binding.lastPage.setOnClickListener(v -> {
+            int last = page - 1;
+            if (last < 1) {
+                showToast("没有更多数据!");
+                return;
             }
+            page = last;
+            getHxpStockWait(false);
         });
         // 下一页
-        binding.nextPage.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                int next = page + 1;
-                if (next > pages) {
-                    showToast("没有更多数据!");
-                    return;
-                }
-                page = next;
-                getHxpStockWait(false);
+        binding.nextPage.setOnClickListener(v -> {
+            int next = page + 1;
+            if (next > pages) {
+                showToast("没有更多数据!");
+                return;
             }
+            page = next;
+            getHxpStockWait(false);
         });
 
         try {
@@ -414,14 +413,11 @@ public class AlreadyActivity extends BaseActivity {
             LogUtils.e(Log.getStackTraceString(e));
         }
         // 退出
-        binding.tvOutLogin.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                try {
-                    HttpTool.logout();
-                } catch (IOException e) {
-                    LogUtils.e(Log.getStackTraceString(e));
-                }
+        binding.tvOutLogin.setOnClickListener(v -> {
+            try {
+                HttpTool.logout();
+            } catch (IOException e) {
+                LogUtils.e(Log.getStackTraceString(e));
             }
         });
         binding.tvReturn.setOnClickListener(v -> finish());
@@ -432,10 +428,10 @@ public class AlreadyActivity extends BaseActivity {
             @Override
             public String doInBackground() throws Throwable {
 
-                List<String> autoChemicalList = planAddData.getAutoChemicalList();
+                List<HxpChemicalVo> hxpChemicalVos = planAddData.getAutoChemicalList();
                 JSONArray jsonArray = new JSONArray();
-                for (int i = 0; i < autoChemicalList.size(); i++) {
-                    String waitId = autoChemicalList.get(i);
+                for (int i = 0; i < hxpChemicalVos.size(); i++) {
+                    String waitId = hxpChemicalVos.get(i).getWaitId();
                     JSONObject jsonObject = new JSONObject();
                     jsonObject.put("waitId", waitId);
                     jsonArray.put(jsonObject);
@@ -480,15 +476,11 @@ public class AlreadyActivity extends BaseActivity {
             public List<String> doInBackground() throws Throwable {
                 Response response = HttpTool.getApplyOrder(ChemicalApp.subjectId);
                 String json = response.body().string();
+                LogUtils.d(json);
                 JSONObject jsonObject = new JSONObject(json);
                 if (jsonObject.getInt("code") == 200) {
                     JSONObject data = jsonObject.getJSONObject("data");
-                    applicantList = GsonUtils.fromJson(data.getJSONArray("applicants").toString(), new TypeToken<ArrayList<String>>() {
-                    }.getType());
-                    ownerList = GsonUtils.fromJson(data.getJSONArray("owners").toString(), new TypeToken<ArrayList<String>>() {
-                    }.getType());
-                    applyOrderNumberList = GsonUtils.fromJson(data.getJSONArray("applyOrderNumbers").toString(), new TypeToken<ArrayList<String>>() {
-                    }.getType());
+                    applyOrderBean = GsonUtils.fromJson(data.toString(), ApplyOrderBean.class);
                 } else {
                     String msg = jsonObject.getString("message");
                     ToastUtils.showLong(msg);

+ 5 - 4
app/src/main/java/xn/hxp/ui/plan/already/AlreadyAdapter.java

@@ -122,9 +122,9 @@ public class AlreadyAdapter extends BaseAdapter {
                         recordsBean.setSelect(binding.selectCB.isChecked());
                     }
                 });
-                ClickUtils.applySingleDebouncing(binding.save, new View.OnClickListener() {
+                binding.save.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
                     @Override
-                    public void onClick(View v) {
+                    public void onDebouncingClick(View v) {
                         context.showLoading("");
                         recordsBeanList.get(position).setSelect(true);
                         notifyDataSetChanged();
@@ -133,9 +133,10 @@ public class AlreadyAdapter extends BaseAdapter {
                     }
                 });
 
-                binding.operate.setOnClickListener(new View.OnClickListener() {
+                binding.operate.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
                     @Override
-                    public void onClick(View v) {
+                    public void onDebouncingClick(View v) {
+
                         context.showLoading("打印中...");
                         AsyncTask.execute(() -> {
                             try {

+ 85 - 0
app/src/main/java/xn/hxp/ui/plan/already/ApplyOrderBean.java

@@ -0,0 +1,85 @@
+package xn.hxp.ui.plan.already;
+
+import java.util.List;
+
+public class ApplyOrderBean {
+
+    private TypeOtherBean typeOther;
+    private TypeOwnerBean typeOwner;
+
+    public TypeOtherBean getTypeOther() {
+        return typeOther;
+    }
+
+    public void setTypeOther(TypeOtherBean typeOther) {
+        this.typeOther = typeOther;
+    }
+
+    public TypeOwnerBean getTypeOwner() {
+        return typeOwner;
+    }
+
+    public void setTypeOwner(TypeOwnerBean typeOwner) {
+        this.typeOwner = typeOwner;
+    }
+
+    public static class TypeOtherBean {
+        private List<String> applicants;
+        private List<String> owners;
+        private List<String> applyOrderNumbers;
+
+        public List<String> getApplicants() {
+            return applicants;
+        }
+
+        public void setApplicants(List<String> applicants) {
+            this.applicants = applicants;
+        }
+
+        public List<String> getOwners() {
+            return owners;
+        }
+
+        public void setOwners(List<String> owners) {
+            this.owners = owners;
+        }
+
+        public List<String> getApplyOrderNumbers() {
+            return applyOrderNumbers;
+        }
+
+        public void setApplyOrderNumbers(List<String> applyOrderNumbers) {
+            this.applyOrderNumbers = applyOrderNumbers;
+        }
+    }
+
+    public static class TypeOwnerBean {
+        private List<String> applicants;
+        private List<String> owners;
+        private List<String> applyOrderNumbers;
+
+        public List<String> getApplicants() {
+            return applicants;
+        }
+
+        public void setApplicants(List<String> applicants) {
+            this.applicants = applicants;
+        }
+
+        public List<String> getOwners() {
+            return owners;
+        }
+
+        public void setOwners(List<String> owners) {
+            this.owners = owners;
+        }
+
+        public List<String> getApplyOrderNumbers() {
+            return applyOrderNumbers;
+        }
+
+        public void setApplyOrderNumbers(List<String> applyOrderNumbers) {
+            this.applyOrderNumbers = applyOrderNumbers;
+        }
+    }
+}

+ 11 - 4
app/src/main/java/xn/hxp/ui/plan/change/ChangeCabinetFragment.java

@@ -9,14 +9,14 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import xn.hxp.databinding.FragmentChangeCabinetBinding;
 import xn.hxp.databinding.IncludeCabinetBinding;
 import xn.hxp.ui.plan.FragmentCallBack;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetVo;
 
-import java.util.ArrayList;
-import java.util.List;
-
 public class ChangeCabinetFragment extends Fragment {
     private List<HxpCabinetVo> hxpCabinetVoList;
     private FragmentCallBack fragmentCallBack;
@@ -51,11 +51,17 @@ public class ChangeCabinetFragment extends Fragment {
         changeCabinetHelpList.clear();
         includeCabinetBindingList.clear();
         binding.main.removeAllViewsInLayout();
+        SingleSelectCallBack singleSelectCallBack = v -> {
+            for (int i = 0; i < changeCabinetHelpList.size(); i++) {
+                ChangeCabinetHelp changeCabinetHelp = changeCabinetHelpList.get(i);
+                changeCabinetHelp.updateSelect(v);
+            }
+        };
         for (int i = 0; i < hxpCabinetVoList.size(); i++) {
             HxpCabinetVo hxpCabinetVo = hxpCabinetVoList.get(i);
             IncludeCabinetBinding includeCabinetBinding = IncludeCabinetBinding.inflate(getLayoutInflater());
             includeCabinetBindingList.add(includeCabinetBinding);
-            changeCabinetHelpList.add(new ChangeCabinetHelp(includeCabinetBinding, hxpCabinetVo, fragmentCallBack));
+            changeCabinetHelpList.add(new ChangeCabinetHelp(includeCabinetBinding, hxpCabinetVo, fragmentCallBack, singleSelectCallBack));
             binding.main.addView(includeCabinetBinding.getRoot());
         }
     }
@@ -65,4 +71,5 @@ public class ChangeCabinetFragment extends Fragment {
         super.onPause();
         updateUi();
     }
+
 }

+ 19 - 6
app/src/main/java/xn/hxp/ui/plan/change/ChangeCabinetHelp.java

@@ -2,8 +2,15 @@ package xn.hxp.ui.plan.change;
 
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.RadioButton;
 
 import com.blankj.utilcode.util.LogUtils;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
 import xn.hxp.R;
 import xn.hxp.databinding.IncludeCabinetBinding;
 import xn.hxp.ui.plan.FragmentCallBack;
@@ -12,20 +19,17 @@ import xn.hxp.ui.plan.room.bean.locker.CabinetLayerSelect;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetDoorVo;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetVo;
 
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
 public class ChangeCabinetHelp {
 
     private Map<Long, List<DrawerUiBean>> drawerUiMap = new TreeMap<>();
     private IncludeCabinetBinding binding;
     private FragmentCallBack fragmentCallBack;
+    private SingleSelectCallBack singleSelectCallBack;
 
-    public ChangeCabinetHelp(IncludeCabinetBinding binding, HxpCabinetVo hxpCabinetVo, FragmentCallBack fragmentCallBack) {
+    public ChangeCabinetHelp(IncludeCabinetBinding binding, HxpCabinetVo hxpCabinetVo, FragmentCallBack fragmentCallBack, SingleSelectCallBack singleSelectCallBack) {
         this.binding = binding;
         this.fragmentCallBack = fragmentCallBack;
+        this.singleSelectCallBack = singleSelectCallBack;
         List<DrawerUiBean> drawerUiUpList = new LinkedList<>();
         List<DrawerUiBean> drawerUiDownList = new LinkedList<>();
         // 上柜view控制
@@ -134,6 +138,13 @@ public class ChangeCabinetHelp {
         }
     }
 
+    public void updateSelect(View v) {
+        binding.lockerUpDrawerRG.clearCheck();
+        binding.lockerDownDrawerRG.clearCheck();
+        RadioButton radioButton = (RadioButton) v;
+        radioButton.setChecked(true);
+    }
+
     private View.OnClickListener createClickDoorUpListener(HxpCabinetVo hxpCabinetVo) {
         return v -> {
             if (-1 != binding.lockerDownDrawerRG.getCheckedRadioButtonId()) {
@@ -158,6 +169,7 @@ public class ChangeCabinetHelp {
                 layer = 8;
             }
             LogUtils.d("上柜", layer + "层");
+            singleSelectCallBack.select(v);
             fragmentCallBack.onSelected(new CabinetLayerSelect(hxpCabinetVo.getCabinetId(), hxpCabinetVo.getCabinetDoorVoList().get(0).getDoorId(), layer));
         };
     }
@@ -178,6 +190,7 @@ public class ChangeCabinetHelp {
                 layer = 4;
             }
             LogUtils.d("下柜", layer + "层");
+            singleSelectCallBack.select(v);
             fragmentCallBack.onSelected(new CabinetLayerSelect(hxpCabinetVo.getCabinetId(), hxpCabinetVo.getCabinetDoorVoList().get(1).getDoorId(), layer));
         };
     }

+ 7 - 0
app/src/main/java/xn/hxp/ui/plan/change/SingleSelectCallBack.java

@@ -0,0 +1,7 @@
+package xn.hxp.ui.plan.change;
+
+import android.view.View;
+
+public interface SingleSelectCallBack {
+    public void select(View v);
+}

+ 3 - 0
app/src/main/java/xn/hxp/ui/plan/room/dao/HxpInventoryDAO.java

@@ -39,6 +39,9 @@ public interface HxpInventoryDAO {
     @Query("DELETE FROM inventoryitembean WHERE layer = :layer AND cabinetId =:cabinetId AND doorId =:doorId")
     void delete(long cabinetId, long doorId, long layer);
 
+    @Query("DELETE FROM inventoryitembean WHERE doorId = :doorId")
+    void delete(long doorId);
+
     @Query("DELETE FROM inventoryitembean WHERE id = :id")
     void delete(int id);
 

+ 6 - 1
app/src/main/java/xn/hxp/ui/plan/save_list/SaveListActivity.java

@@ -101,7 +101,12 @@ public class SaveListActivity extends BaseActivity {
         cabinetDAO = RoomTool.getInstance().hxpCabinetDAO();
         doorDAO = RoomTool.getInstance().hxpDoorDAO();
         List<InventoryItemBean> inventoryItemBeanList = inventoryDAO.getAll();
-        LogUtils.json("清单", inventoryItemBeanList);
+        List<String> hxpIds = new ArrayList<>();
+        for (int i = 0; i < inventoryItemBeanList.size(); i++) {
+            InventoryItemBean inventoryItemBean = inventoryItemBeanList.get(i);
+            hxpIds.add(String.valueOf(inventoryItemBean.getHxpChemicalVo().getChemicalId()));
+        }
+        LogUtils.d("清单", inventoryItemBeanList.size(), hxpIds);
         for (int i = 0; i < inventoryItemBeanList.size(); i++) {
             InventoryItemBean inventoryItemBean = inventoryItemBeanList.get(i);
             SaveListBean saveListBean = new SaveListBean();

+ 63 - 5
app/src/main/java/xn/hxp/ui/plan/unlock/UnlockActivityHelp.java

@@ -501,24 +501,51 @@ public class UnlockActivityHelp {
             ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<String>() {
                 @Override
                 public String doInBackground() throws Throwable {
-
-                    List<String> autoChemicalList = activity.planAddData.getAutoChemicalList();
+                    List<HxpChemicalVo> autoChemicalList = activity.planAddData.getAutoChemicalList();
+                    List<HxpCabinetVo> cabinetVoList = activity.planAddData.getCabinetList();
+                    List<HxpCabinetDoorVo> doorVoList = activity.planAddData.getDoorList();
+
+                    for (int i = 0; i < unlockList.size(); i++) {
+                        HxpCabinetLockVo hxpCabinetLockVo = unlockList.get(i);
+                        // 开锁失败
+                        if (hxpCabinetLockVo.getUnlockType() == 2) {
+                            long doorId = hxpCabinetLockVo.getDoorId();
+                            for (int j = 0; j < autoChemicalList.size(); j++) {
+                                HxpChemicalVo hxpChemicalVo = autoChemicalList.get(j);
+                                if (hxpChemicalVo.getDoorId() == doorId) {
+                                    autoChemicalList.remove(j);
+                                    j--;
+                                }
+                            }
+                        }
+                    }
+                    LogUtils.d("清单", autoChemicalList.size(), cabinetVoList.size(), doorVoList.size());
                     JSONArray jsonArray = new JSONArray();
                     for (int i = 0; i < autoChemicalList.size(); i++) {
-                        String waitId = autoChemicalList.get(i);
+                        String waitId = autoChemicalList.get(i).getWaitId();
                         JSONObject jsonObject = new JSONObject();
                         jsonObject.put("waitId", waitId);
                         jsonObject.put("oneUserId", userValidation1.getUserId());
                         jsonObject.put("twoUserId", userValidation2.getUserId());
                         jsonArray.put(jsonObject);
                     }
-                    LogUtils.d(jsonArray);
+                    if (jsonArray.length() == 0) {
+                        return "没有可入库的化学品,请检查柜门是否已开!";
+                    }
                     Response response = HttpTool.autoChemicals(jsonArray.toString());
                     if (response.isSuccessful()) {
                         String json = response.body().string();
                         JSONObject jsonObject = new JSONObject(json);
                         int code = jsonObject.getInt("code");
                         if (code == 200) {
+                            HxpInventoryDAO hxpInventoryDAO = RoomTool.getInstance().hxpInventoryDAO();
+                            // 删除未开锁成功的柜门
+                            for (int j = 0; j < unlockList.size(); j++) {
+                                HxpCabinetLockVo hxpCabinetLockVo = unlockList.get(j);
+                                if (2 == hxpCabinetLockVo.getUnlockType()) {
+                                    hxpInventoryDAO.delete(hxpCabinetLockVo.getDoorId());
+                                }
+                            }
                             return "";
                         } else {
                             return jsonObject.getString("message");
@@ -553,6 +580,27 @@ public class UnlockActivityHelp {
                     HxpCabinetDAO cabinetDAO = RoomTool.getInstance().hxpCabinetDAO();
                     HxpDoorDAO doorDAO = RoomTool.getInstance().hxpDoorDAO();
                     List<InventoryItemBean> inventoryItemBeanList = hxpInventoryDAO.getAll();
+                    // 删除未开锁成功的柜门
+                    for (int j = 0; j < unlockList.size(); j++) {
+                        HxpCabinetLockVo hxpCabinetLockVo = unlockList.get(j);
+                        if (2 == hxpCabinetLockVo.getUnlockType()) {
+                            for (int i = 0; i < inventoryItemBeanList.size(); i++) {
+                                InventoryItemBean inventoryItemBean = inventoryItemBeanList.get(i);
+                                if (hxpCabinetLockVo.getDoorId() == inventoryItemBean.getDoorId()) {
+                                    inventoryItemBeanList.remove(i);
+                                    i--;
+                                }
+                            }
+                        }
+                    }
+
+                    List<String> hxpIds = new ArrayList<>();
+                    for (int i = 0; i < inventoryItemBeanList.size(); i++) {
+                        InventoryItemBean inventoryItemBean = inventoryItemBeanList.get(i);
+                        hxpIds.add(String.valueOf(inventoryItemBean.getHxpChemicalVo().getChemicalId()));
+                    }
+                    LogUtils.d("清单", inventoryItemBeanList.size(), hxpIds);
+
                     List<HxpChemicalVo> hxpChemicalVoList = new ArrayList<>();
                     for (int i = 0; i < inventoryItemBeanList.size(); i++) {
                         InventoryItemBean inventoryItemBean = inventoryItemBeanList.get(i);
@@ -587,13 +635,23 @@ public class UnlockActivityHelp {
                         hxpChemicalVo.setLayers(String.valueOf(inventoryItemBean.getLayer()));
                         hxpChemicalVoList.add(hxpChemicalVo);
                     }
-                    LogUtils.json(hxpChemicalVoList);
+                    if (hxpChemicalVoList.isEmpty()) {
+                        return "没有可入库的化学品,请检查柜门是否已开!";
+                    }
+
                     Response response = HttpTool.addChemical(hxpChemicalVoList);
                     if (response.isSuccessful()) {
                         String json = response.body().string();
                         JSONObject jsonObject = new JSONObject(json);
                         int code = jsonObject.getInt("code");
                         if (code == 200) {
+                            // 删除未开锁成功的柜门
+                            for (int j = 0; j < unlockList.size(); j++) {
+                                HxpCabinetLockVo hxpCabinetLockVo = unlockList.get(j);
+                                if (2 == hxpCabinetLockVo.getUnlockType()) {
+                                    hxpInventoryDAO.delete(hxpCabinetLockVo.getDoorId());
+                                }
+                            }
                             return "";
                         } else {
                             return jsonObject.getString("message");

+ 1 - 4
app/src/main/res/drawable/bg_closes.xml

@@ -2,9 +2,6 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
 
     <solid android:color="#ffffffff" />
-    <corners android:radius="34dp"/>
-    <size
-        android:width="110dp"
-        android:height="32dp" />
+    <corners android:radius="45dp"/>
 
 </shape>

+ 6 - 0
app/src/main/res/drawable/shape_rect_ffffff_45.xml

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

+ 4 - 4
app/src/main/res/layout/activity_change_cabinet.xml

@@ -133,16 +133,16 @@
         <LinearLayout
             android:id="@+id/control_LL"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_height="40dp"
             android:layout_alignParentBottom="true"
             android:layout_centerHorizontal="true"
-            android:layout_marginBottom="10px"
+            android:gravity="center_vertical"
             android:orientation="horizontal">
 
             <Button
                 android:id="@+id/cancel_BT"
                 android:layout_width="150px"
-                android:layout_height="50px"
+                android:layout_height="30dp"
                 android:layout_marginHorizontal="35px"
                 android:background="@drawable/bg_closes"
                 android:text="取消" />
@@ -150,7 +150,7 @@
             <Button
                 android:id="@+id/confirm_BT"
                 android:layout_width="150px"
-                android:layout_height="50px"
+                android:layout_height="30dp"
                 android:layout_marginHorizontal="35px"
                 android:background="@drawable/selector_input_select_bt"
                 android:text="确定"

+ 46 - 41
app/src/main/res/layout/activity_main.xml

@@ -23,17 +23,16 @@
             android:layout_marginTop="30dp"
             android:orientation="horizontal">
 
-            <LinearLayout
+            <RelativeLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_weight="0.4"
-                android:orientation="vertical"
-                android:paddingLeft="10dp"
-                android:paddingRight="10dp">
+                android:layout_height="match_parent"
+                android:layout_weight="0.4">
 
                 <RelativeLayout
+                    android:id="@+id/gst"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_centerHorizontal="true"
                     android:layout_gravity="center"
                     android:layout_marginRight="8dp">
 
@@ -59,44 +58,14 @@
 
                 </RelativeLayout>
 
-                <RelativeLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent">
-
-                    <ImageView
-                        android:id="@+id/imgLeft"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_centerVertical="true"
-                        android:layout_marginLeft="10dp"
-                        android:background="@mipmap/icon_sy_z" />
-
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/relView"
-                        android:layout_width="match_parent"
-                        android:layout_height="370dp"
-                        android:layout_marginLeft="10dp"
-                        android:layout_marginRight="10dp"
-                        android:layout_toLeftOf="@+id/imgRight"
-                        android:layout_toRightOf="@+id/imgLeft"
-                        android:orientation="horizontal"
-                        tools:listitem="@layout/item_cabinet_view" />
-
-                    <ImageView
-                        android:id="@+id/imgRight"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_alignParentRight="true"
-                        android:layout_centerVertical="true"
-                        android:layout_marginRight="10dp"
-                        android:background="@mipmap/icon_sy_y" />
-
-                </RelativeLayout>
-
                 <LinearLayout
+                    android:id="@+id/gs"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_centerHorizontal="true"
                     android:layout_gravity="center"
+                    android:layout_marginBottom="90px"
                     android:orientation="vertical">
 
                     <TextView
@@ -119,8 +88,44 @@
 
                 </LinearLayout>
 
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_above="@id/gs"
+                    android:layout_below="@id/gst">
 
-            </LinearLayout>
+                    <androidx.appcompat.widget.AppCompatImageButton
+                        android:id="@+id/last"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginHorizontal="60px"
+                        android:background="@mipmap/icon_sy_z"
+                        android:visibility="gone" />
+
+                    <androidx.appcompat.widget.AppCompatImageButton
+                        android:id="@+id/next"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_alignParentEnd="true"
+                        android:layout_centerVertical="true"
+                        android:layout_marginHorizontal="60px"
+                        android:background="@mipmap/icon_sy_y"
+                        android:visibility="gone" />
+
+                    <com.zhpan.bannerview.BannerViewPager
+                        android:id="@+id/cabinetVP"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerInParent="true"
+                        android:layout_toStartOf="@id/next"
+                        android:layout_toEndOf="@id/last"
+                        app:bvp_auto_play="false"
+                        app:bvp_scroll_duration="500" />
+                </RelativeLayout>
+
+
+            </RelativeLayout>
 
             <LinearLayout
                 android:layout_width="match_parent"

+ 1 - 1
app/src/main/res/layout/activity_setting.xml

@@ -265,7 +265,7 @@
                             android:id="@+id/http_uri_xn_BT"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:text="西农地址" />
+                            android:text="线上地址" />
                     </LinearLayout>
 
 

+ 184 - 0
app/src/main/res/layout/fragment_main_cabinet.xml

@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="PxUsage">
+
+    <RelativeLayout
+        android:id="@+id/cabinetRL"
+        android:layout_width="500px"
+        android:layout_height="650px"
+        android:layout_centerInParent="true"
+        android:background="@mipmap/icon_sy_hxpg">
+
+        <androidx.appcompat.widget.AppCompatImageView
+            android:layout_width="24px"
+            android:layout_height="24px"
+            android:layout_marginStart="26px"
+            android:layout_marginTop="36px"
+            android:src="@drawable/bg_yuan_jiao" />
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/cabinetName"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="67px"
+            android:layout_marginTop="22px"
+            android:textColor="@color/white"
+            android:textSize="30px" />
+
+        <RelativeLayout
+            android:id="@+id/doorRLL"
+            android:layout_width="180px"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="23px"
+            android:layout_marginTop="125px"
+            android:background="@drawable/bg_bei_gui"
+            android:visibility="invisible">
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/doorName1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_marginTop="12px"
+                android:textColor="@color/white"
+                android:textSize="24px" />
+
+            <View
+                android:layout_width="160px"
+                android:layout_height="2px"
+                android:layout_below="@id/doorName1"
+                android:layout_centerHorizontal="true"
+                android:layout_marginTop="7px"
+                android:background="@color/white" />
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@id/doorName1"
+                android:layout_marginTop="25px">
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="16px"
+                    android:text="数    量:  "
+                    android:textColor="@color/white"
+                    android:textSize="20px" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:id="@+id/doorHxpSize1"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@color/white"
+                    android:textSize="20px" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@id/doorName1"
+                android:layout_marginStart="16px"
+                android:layout_marginTop="64px"
+                android:orientation="horizontal"
+                android:paddingBottom="10px">
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="管理员:"
+                    android:textColor="@color/white"
+                    android:textSize="20px" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:id="@+id/doorAdmin1"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="10px"
+                    android:textColor="@color/white"
+                    android:textSize="20px" />
+            </LinearLayout>
+
+        </RelativeLayout>
+
+        <RelativeLayout
+            android:id="@+id/doorRLR"
+            android:layout_width="180px"
+            android:layout_height="wrap_content"
+            android:layout_alignParentEnd="true"
+            android:layout_marginTop="125px"
+            android:layout_marginEnd="23px"
+            android:background="@drawable/bg_bei_gui"
+            android:visibility="invisible">
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/doorName2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_marginTop="12px"
+                android:textColor="@color/white"
+                android:textSize="24px" />
+
+            <View
+                android:layout_width="160px"
+                android:layout_height="2px"
+                android:layout_below="@id/doorName2"
+                android:layout_centerHorizontal="true"
+                android:layout_marginTop="7px"
+                android:background="@color/white" />
+
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@id/doorName2"
+                android:layout_marginTop="25px">
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="16px"
+                    android:text="数    量:  "
+                    android:textColor="@color/white"
+                    android:textSize="20px" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:id="@+id/doorHxpSize2"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@color/white"
+                    android:textSize="20px" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@id/doorName2"
+                android:layout_marginStart="16px"
+                android:layout_marginTop="64px"
+                android:orientation="horizontal"
+                android:paddingBottom="10px">
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="管理员:"
+                    android:textColor="@color/white"
+                    android:textSize="20px" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:id="@+id/doorAdmin2"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="10px"
+                    android:textColor="@color/white"
+                    android:textSize="20px" />
+            </LinearLayout>
+
+        </RelativeLayout>
+
+    </RelativeLayout>
+</RelativeLayout>

+ 1 - 1
app/src/main/res/values-night/themes.xml

@@ -1,6 +1,6 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="Base.Theme.西农化学品终端" parent="Theme.Material3.DayNight.NoActionBar">
+    <style name="Base.Theme.化学品终端" parent="Theme.Material3.DayNight.NoActionBar">
         <!-- Customize your dark theme here. -->
         <!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
     </style>

+ 1 - 1
settings.gradle

@@ -20,6 +20,6 @@ dependencyResolutionManagement {
     }
 }
 
-rootProject.name = "西农化学品终端"
+rootProject.name = "化学品终端"
 include ':app'
 include ':serialport'