Browse Source

任务下发反馈

lichao 2 months ago
parent
commit
e943e8d0c0
72 changed files with 6430 additions and 0 deletions
  1. 1 0
      rwxffk/.gitignore
  2. 139 0
      rwxffk/build.gradle
  3. 21 0
      rwxffk/proguard-rules.pro
  4. 13 0
      rwxffk/src/androidTest/java/com/xwkj/rwxffk/ExampleInstrumentedTest.java
  5. 53 0
      rwxffk/src/main/AndroidManifest.xml
  6. 89 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/ActivityLifecycleCallbacksImpl.java
  7. 72 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/AppLifecyclesImpl.java
  8. 17 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/EventBusTags.java
  9. 97 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/FragmentLifecycleCallbacksImpl.java
  10. 159 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/GlobalConfiguration.java
  11. 116 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/GlobalHttpHandlerImpl.java
  12. 64 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/ResponseErrorListenerImpl.java
  13. 337 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/BusEntity.java
  14. 213 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/BusResEntity.java
  15. 9 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/CommonInterFace.java
  16. 52 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/Location.java
  17. 306 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/Login.java
  18. 223 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/ReqToBus.java
  19. 51 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/RxUtils.java
  20. 256 0
      rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/UploadUtil.java
  21. 41 0
      rwxffk/src/main/java/com/xwkj/rwxffk/di/component/MainComponent.java
  22. 41 0
      rwxffk/src/main/java/com/xwkj/rwxffk/di/component/WqsRwComponent.java
  23. 41 0
      rwxffk/src/main/java/com/xwkj/rwxffk/di/component/YqsRwComponent.java
  24. 30 0
      rwxffk/src/main/java/com/xwkj/rwxffk/di/module/MainModule.java
  25. 30 0
      rwxffk/src/main/java/com/xwkj/rwxffk/di/module/WqsRwModule.java
  26. 30 0
      rwxffk/src/main/java/com/xwkj/rwxffk/di/module/YqsRwModule.java
  27. 31 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/contract/MainContract.java
  28. 31 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/contract/WqsRwContract.java
  29. 30 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/contract/YqsRwContract.java
  30. 46 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/MainModel.java
  31. 46 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/WqsRwModel.java
  32. 46 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/YqsRwModel.java
  33. 15 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/api/Api.java
  34. 26 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/api/service/ApiService.java
  35. 1080 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/entity/MdjfXqEntity.java
  36. 405 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/entity/RwEntity.java
  37. 80 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/presenter/MainPresenter.java
  38. 169 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/presenter/WqsRwPresenter.java
  39. 83 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/presenter/YqsRwPresenter.java
  40. 328 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/activity/MainActivity.java
  41. 275 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/adapter/BaseRecycleAdapter.java
  42. 42 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/adapter/RwLbAdapter.java
  43. 49 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/adapter/RwLbAdapterV2.java
  44. 315 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/fragment/WqsRwFragment.java
  45. 255 0
      rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/fragment/YqsRwFragment.java
  46. 9 0
      rwxffk/src/main/res/anim/translate_center_to_left.xml
  47. 9 0
      rwxffk/src/main/res/anim/translate_center_to_right.xml
  48. 9 0
      rwxffk/src/main/res/anim/translate_left_to_center.xml
  49. 9 0
      rwxffk/src/main/res/anim/translate_right_to_center.xml
  50. BIN
      rwxffk/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png
  51. BIN
      rwxffk/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png
  52. BIN
      rwxffk/src/main/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png
  53. 9 0
      rwxffk/src/main/res/drawable/bg_jq.xml
  54. 9 0
      rwxffk/src/main/res/drawable/bg_jq_white.xml
  55. 32 0
      rwxffk/src/main/res/layout/activity_main.xml
  56. 24 0
      rwxffk/src/main/res/layout/fragment_wqs_rw.xml
  57. 24 0
      rwxffk/src/main/res/layout/fragment_yqs_rw.xml
  58. 35 0
      rwxffk/src/main/res/layout/include_title.xml
  59. 178 0
      rwxffk/src/main/res/layout/item_rwlb.xml
  60. 173 0
      rwxffk/src/main/res/layout/item_rwlb2.xml
  61. BIN
      rwxffk/src/main/res/mipmap-hdpi/ic_launcher.png
  62. BIN
      rwxffk/src/main/res/mipmap-xhdpi/ic_launcher.png
  63. BIN
      rwxffk/src/main/res/mipmap-xxhdpi/ic_launcher.png
  64. BIN
      rwxffk/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  65. 8 0
      rwxffk/src/main/res/values/colors.xml
  66. 3 0
      rwxffk/src/main/res/values/dimens.xml
  67. 3 0
      rwxffk/src/main/res/values/strings.xml
  68. 17 0
      rwxffk/src/main/res/values/styles.xml
  69. 4 0
      rwxffk/src/main/res/xml/file_paths.xml
  70. 4 0
      rwxffk/src/main/res/xml/network_security_config.xml
  71. 17 0
      rwxffk/src/test/java/com/xwkj/rwxffk/ExampleUnitTest.java
  72. 1 0
      settings.gradle

+ 1 - 0
rwxffk/.gitignore

@@ -0,0 +1 @@
+/build

+ 139 - 0
rwxffk/build.gradle

@@ -0,0 +1,139 @@
+apply plugin: 'com.android.application'
+
+def releaseTime() {
+    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
+}
+android {
+    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
+    
+    useLibrary 'org.apache.http.legacy'
+
+    compileOptions {
+        targetCompatibility JavaVersion.VERSION_1_8
+        sourceCompatibility JavaVersion.VERSION_1_8
+    }
+
+    defaultConfig {
+        applicationId "com.xwkj.rwxffk"
+        minSdkVersion rootProject.ext.android["minSdkVersion"]
+        targetSdkVersion 28
+        versionCode 1
+        versionName "1"
+        testInstrumentationRunner rootProject.ext.dependencies["androidJUnitRunner"]
+        flavorDimensions "1"
+    }
+
+    signingConfigs {
+        debug {
+            keyAlias 'zkjc_police'
+            keyPassword 'jlszkjc777888'
+            storeFile file("../sign/keystore.jks")
+            storePassword 'jlszkjc777888'
+//            v2SigningEnabled false
+        }
+        release {
+            keyAlias 'zkjc_police'
+            keyPassword 'jlszkjc777888'
+            storeFile file("../sign/keystore.jks")
+            storePassword 'jlszkjc777888'
+//            v2SigningEnabled false
+        }
+
+    }
+    buildTypes {
+        debug {
+            buildConfigField "boolean", "LOG_DEBUG", "true"
+            buildConfigField "boolean", "USE_CANARY", "true"
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+
+        release {
+            buildConfigField "boolean", "LOG_DEBUG", "false"
+            buildConfigField "boolean", "USE_CANARY", "false"
+            /*minifyEnabled false
+            shrinkResources true
+            zipAlignEnabled true*/
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+    productFlavors {
+        //应用商店版本
+        appstore {
+            resValue "string", "app_name", "任务下发反馈"
+            signingConfig signingConfigs.release
+            manifestPlaceholders = [UMENG_CHANNEL: "appstore", CATEGORY: "android.intent.category.DEFAULT", APP_ICON: "@mipmap/ic_launcher"]
+        }
+        //非应用商店版本
+        unappstore {
+
+            resValue "string", "app_name", "任务下发反馈"
+            signingConfig signingConfigs.release
+            manifestPlaceholders = [UMENG_CHANNEL: "unappstore", CATEGORY: "android.intent.category.LAUNCHER", APP_ICON: "@mipmap/ic_launcher"]
+        }
+
+
+    }
+    productFlavors.all { flavor ->
+        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name, CATEGORY_VALUE: flavor.manifestPlaceholders.CATEGORY, APP_ICON: flavor.manifestPlaceholders.APP_ICON]
+//        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
+    }
+
+    applicationVariants.all { variant ->
+        variant.outputs.all {
+            if (variant.buildType.name == 'release') {
+                // release:输出文件名必须命名为 outputFileName
+                outputFileName = "${variant.productFlavors[0].name}_${variant.productFlavors[0].applicationId}_${buildType.name}_v${variant.versionName}_${releaseTime()}.apk"
+//                        output.outputFile = new File(output.outputFile.parent, apkName)
+            } else {
+                // debug 输出文件名必须命名为 outputFileName
+                outputFileName = "${variant.productFlavors[0].name}_${project.getName()}_${buildType.name}.apk"
+//                        output.outputFile = new File(output.outputFile.parent, apkName)
+            }
+        }
+    }
+
+
+    lintOptions {
+        disable 'InvalidPackage'
+        disable "ResourceType"
+        abortOnError false
+    }
+
+}
+repositories {
+    flatDir {
+        dirs 'libs', '../common/libs'
+    }
+}
+dependencies {
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    //   implementation 'me.jessyan:arms:2.5.2'
+    // implementation 'me.jessyan:arms-imageloader-glide:2.5.2'
+
+    //view
+    implementation rootProject.ext.dependencies["autosize"]
+    annotationProcessor(rootProject.ext.dependencies["butterknife-compiler"]) {
+        exclude module: 'support-annotations'
+    }
+
+    //tools
+    annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
+
+    //注意 Arms 核心库现在并不会依赖某个 EventBus, 要想使用 EventBus, 还请在项目中自行依赖对应的 EventBus
+    //现在支持两种 EventBus, greenrobot 的 EventBus 和畅销书 《Android源码设计模式解析与实战》的作者 何红辉 所作的 AndroidEventBus
+    //依赖后 Arms 会自动检测您依赖的 EventBus 并自动注册
+    //建议使用 AndroidEventBus, 特别是组件化项目, 原因请看 https://github.com/hehonghui/AndroidEventBus/issues/49
+    //这种做法可以让使用者有自行选择三方库的权利, 并且还可以减轻 Arms 的体积
+    implementation rootProject.ext.dependencies["androideventbus"]
+//    implementation rootProject.ext.dependencies["eventbus"]
+
+    //test
+    debugImplementation rootProject.ext.dependencies["canary-debug"]
+    releaseImplementation rootProject.ext.dependencies["canary-release"]
+    testImplementation rootProject.ext.dependencies["canary-release"]
+    testImplementation rootProject.ext.dependencies["junit"]
+    implementation project(':thirdparty')
+    implementation project(':common')
+
+}

+ 21 - 0
rwxffk/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 13 - 0
rwxffk/src/androidTest/java/com/xwkj/rwxffk/ExampleInstrumentedTest.java

@@ -0,0 +1,13 @@
+package com.xwkj.rwxffk;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleInstrumentedTest {
+
+    public void useAppContext() {
+
+    }
+}

+ 53 - 0
rwxffk/src/main/AndroidManifest.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.xwkj.rwxffk">
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+
+    <application
+        android:name="com.jess.arms.base.BaseApplication"
+        android:allowBackup="true"
+        android:icon="${APP_ICON}"
+        android:label="@string/app_name"
+        android:networkSecurityConfig="@xml/network_security_config"
+        android:supportsRtl="true"
+        android:theme="@style/AppTheme">
+        <activity android:name=".mvp.ui.activity.MainActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <provider
+            android:name="androidx.core.content.FileProvider"
+            android:authorities="com.xwkj.rwxffk.fileprovider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/file_paths" />
+        </provider>
+        <!--
+         只要依赖 AutoSize 就必须填写设计图尺寸, 否则报错, 不想使用 AutoSize 就不要依赖 AutoSize
+        只要填写完设计图的尺寸, AutoSize 就会自动启动, 以下 dp 尺寸是根据公式 px / (dpi / 160) 求出, 运算时使用测试机的 dpi 即可
+        AutoSize 的详细介绍请看这里 https://juejin.im/post/5bce688e6fb9a05cf715d1c2
+        -->
+        <meta-data
+            android:name="design_width_in_dp"
+            android:value="360" />
+        <meta-data
+            android:name="design_height_in_dp"
+            android:value="640" /> <!-- arms配置 -->
+        <meta-data
+            android:name="com.xwkj.rwxffk.app.GlobalConfiguration"
+            android:value="ConfigModule" />
+    </application>
+
+</manifest>

+ 89 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/ActivityLifecycleCallbacksImpl.java

@@ -0,0 +1,89 @@
+package com.xwkj.rwxffk.app;
+
+import android.app.Activity;
+import android.app.Application;
+import android.os.Build;
+import android.os.Bundle;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+
+import android.widget.TextView;
+
+import com.xwkj.rwxffk.R;
+
+import timber.log.Timber;
+
+/**
+ * ================================================
+ * 展示 {@link Application.ActivityLifecycleCallbacks} 的用法
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public class ActivityLifecycleCallbacksImpl implements Application.ActivityLifecycleCallbacks {
+
+    @Override
+    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+        Timber.i(activity + " - onActivityCreated");
+    }
+
+    @Override
+    public void onActivityStarted(Activity activity) {
+        Timber.i(activity + " - onActivityStarted");
+        if (!activity.getIntent().getBooleanExtra("isInitToolbar", false)) {
+            //由于加强框架的兼容性,故将 setContentView 放到 onActivityCreated 之后,onActivityStarted 之前执行
+            //而 findViewById 必须在 Activity setContentView() 后才有效,所以将以下代码从之前的 onActivityCreated 中移动到 onActivityStarted 中执行
+            activity.getIntent().putExtra("isInitToolbar", true);
+            //这里全局给Activity设置toolbar和title,你想象力有多丰富,这里就有多强大,以前放到BaseActivity的操作都可以放到这里
+            if (activity.findViewById(R.id.toolbar) != null) {
+                if (activity instanceof AppCompatActivity) {
+                    ((AppCompatActivity) activity).setSupportActionBar((Toolbar) activity.findViewById(R.id.toolbar));
+                    ((AppCompatActivity) activity).getSupportActionBar().setDisplayShowTitleEnabled(false);
+                } else {
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+                        activity.setActionBar((android.widget.Toolbar) activity.findViewById(R.id.toolbar));
+                        activity.getActionBar().setDisplayShowTitleEnabled(false);
+                    }
+                }
+            }
+            if (activity.findViewById(R.id.toolbar_title) != null) {
+                ((TextView) activity.findViewById(R.id.toolbar_title)).setText(activity.getTitle());
+            }
+            if (activity.findViewById(R.id.toolbar_back) != null) {
+                activity.findViewById(R.id.toolbar_back).setOnClickListener(v -> {
+                    activity.onBackPressed();
+                });
+            }
+        }
+    }
+
+    @Override
+    public void onActivityResumed(Activity activity) {
+        Timber.i(activity + " - onActivityResumed");
+    }
+
+    @Override
+    public void onActivityPaused(Activity activity) {
+        Timber.i(activity + " - onActivityPaused");
+    }
+
+    @Override
+    public void onActivityStopped(Activity activity) {
+        Timber.i(activity + " - onActivityStopped");
+    }
+
+    @Override
+    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
+        Timber.i(activity + " - onActivitySaveInstanceState");
+    }
+
+    @Override
+    public void onActivityDestroyed(Activity activity) {
+        Timber.i(activity + " - onActivityDestroyed");
+        //横竖屏切换或配置改变时, Activity 会被重新创建实例, 但 Bundle 中的基础数据会被保存下来,移除该数据是为了保证重新创建的实例可以正常工作
+        activity.getIntent().removeExtra("isInitToolbar");
+    }
+}

+ 72 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/AppLifecyclesImpl.java

@@ -0,0 +1,72 @@
+package com.xwkj.rwxffk.app;
+
+import android.app.Application;
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.base.delegate.AppLifecycles;
+import com.jess.arms.integration.cache.IntelligentCache;
+import com.jess.arms.utils.ArmsUtils;
+import com.squareup.leakcanary.LeakCanary;
+import com.squareup.leakcanary.RefWatcher;
+
+import butterknife.ButterKnife;
+
+import com.xwkj.rwxffk.BuildConfig;
+
+import timber.log.Timber;
+
+/**
+ * ================================================
+ * 展示 {@link AppLifecycles} 的用法
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public class AppLifecyclesImpl implements AppLifecycles {
+
+    @Override
+    public void attachBaseContext(@NonNull Context base) {
+//          MultiDex.install(base);  //这里比 onCreate 先执行,常用于 MultiDex 初始化,插件化框架的初始化
+    }
+
+    @Override
+    public void onCreate(@NonNull Application application) {
+        ToastUtils.init(application);
+        if (LeakCanary.isInAnalyzerProcess(application)) {
+            // This process is dedicated to LeakCanary for heap analysis.
+            // You should not init your app in this process.
+            return;
+        }
+        if (BuildConfig.LOG_DEBUG) {//Timber初始化
+            //Timber 是一个日志框架容器,外部使用统一的Api,内部可以动态的切换成任何日志框架(打印策略)进行日志打印
+            //并且支持添加多个日志框架(打印策略),做到外部调用一次 Api,内部却可以做到同时使用多个策略
+            //比如添加三个策略,一个打印日志,一个将日志保存本地,一个将日志上传服务器
+            Timber.plant(new Timber.DebugTree());
+            // 如果你想将框架切换为 Logger 来打印日志,请使用下面的代码,如想切换为其他日志框架请根据下面的方式扩展
+//                    Logger.addLogAdapter(new AndroidLogAdapter());
+//                    Timber.plant(new Timber.DebugTree() {
+//                        @Override
+//                        protected void log(int priority, String tag, String message, Throwable t) {
+//                            Logger.log(priority, tag, message, t);
+//                        }
+//                    });
+            ButterKnife.setDebug(true);
+        }
+        //LeakCanary 内存泄露检查
+        //使用 IntelligentCache.KEY_KEEP 作为 key 的前缀, 可以使储存的数据永久存储在内存中
+        //否则存储在 LRU 算法的存储空间中, 前提是 extras 使用的是 IntelligentCache (框架默认使用)
+        ArmsUtils.obtainAppComponentFromContext(application).extras()
+                .put(IntelligentCache.getKeyOfKeep(RefWatcher.class.getName())
+                        , BuildConfig.USE_CANARY ? LeakCanary.install(application) : RefWatcher.DISABLED);
+    }
+
+    @Override
+    public void onTerminate(@NonNull Application application) {
+
+    }
+}

+ 17 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/EventBusTags.java

@@ -0,0 +1,17 @@
+package com.xwkj.rwxffk.app;
+
+/**
+ * ================================================
+ * 放置 AndroidEventBus 的 Tag, 便于检索
+ * Arms 核心库现在并不会依赖某个 EventBus, 要想使用 EventBus, 还请在项目中自行依赖对应的 EventBus
+ * 现在支持两种 EventBus, greenrobot 的 EventBus 和畅销书 《Android源码设计模式解析与实战》的作者 何红辉 所作的 AndroidEventBus
+ *
+ * @see <a href="https://github.com/JessYanCoding/MVPArms/wiki#3.5">EventBusTags wiki 官方文档</a>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public interface EventBusTags {
+
+}

+ 97 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/FragmentLifecycleCallbacksImpl.java

@@ -0,0 +1,97 @@
+package com.xwkj.rwxffk.app;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+
+import android.view.View;
+
+import com.jess.arms.integration.cache.IntelligentCache;
+import com.jess.arms.utils.ArmsUtils;
+import com.squareup.leakcanary.RefWatcher;
+
+import timber.log.Timber;
+
+/**
+ * ================================================
+ * 展示 {@link FragmentManager.FragmentLifecycleCallbacks} 的用法
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public class FragmentLifecycleCallbacksImpl extends FragmentManager.FragmentLifecycleCallbacks {
+
+    @Override
+    public void onFragmentAttached(FragmentManager fm, Fragment f, Context context) {
+        Timber.i(f.toString() + " - onFragmentAttached");
+    }
+
+    @Override
+    public void onFragmentCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) {
+        Timber.i(f.toString() + " - onFragmentCreated");
+        // 在配置变化的时候将这个 Fragment 保存下来,在 Activity 由于配置变化重建时重复利用已经创建的 Fragment。
+        // https://developer.android.com/reference/android/app/Fragment.html?hl=zh-cn#setRetainInstance(boolean)
+        // 如果在 XML 中使用 <Fragment/> 标签,的方式创建 Fragment 请务必在标签中加上 android:id 或者 android:tag 属性,否则 setRetainInstance(true) 无效
+        // 在 Activity 中绑定少量的 Fragment 建议这样做,如果需要绑定较多的 Fragment 不建议设置此参数,如 ViewPager 需要展示较多 Fragment
+        f.setRetainInstance(true);
+    }
+
+    @Override
+    public void onFragmentViewCreated(FragmentManager fm, Fragment f, View v, Bundle savedInstanceState) {
+        Timber.i(f.toString() + " - onFragmentViewCreated");
+    }
+
+    @Override
+    public void onFragmentActivityCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) {
+        Timber.i(f.toString() + " - onFragmentActivityCreated");
+    }
+
+    @Override
+    public void onFragmentStarted(FragmentManager fm, Fragment f) {
+        Timber.i(f.toString() + " - onFragmentStarted");
+    }
+
+    @Override
+    public void onFragmentResumed(FragmentManager fm, Fragment f) {
+        Timber.i(f.toString() + " - onFragmentResumed");
+    }
+
+    @Override
+    public void onFragmentPaused(FragmentManager fm, Fragment f) {
+        Timber.i(f.toString() + " - onFragmentPaused");
+    }
+
+    @Override
+    public void onFragmentStopped(FragmentManager fm, Fragment f) {
+        Timber.i(f.toString() + " - onFragmentStopped");
+    }
+
+    @Override
+    public void onFragmentSaveInstanceState(FragmentManager fm, Fragment f, Bundle outState) {
+        Timber.i(f.toString() + " - onFragmentSaveInstanceState");
+    }
+
+    @Override
+    public void onFragmentViewDestroyed(FragmentManager fm, Fragment f) {
+        Timber.i(f.toString() + " - onFragmentViewDestroyed");
+    }
+
+    @Override
+    public void onFragmentDestroyed(FragmentManager fm, Fragment f) {
+        Timber.i(f.toString() + " - onFragmentDestroyed");
+        ((RefWatcher) ArmsUtils
+                .obtainAppComponentFromContext(f.getActivity())
+                .extras()
+                .get(IntelligentCache.getKeyOfKeep(RefWatcher.class.getName())))
+                .watch(f);
+    }
+
+    @Override
+    public void onFragmentDetached(FragmentManager fm, Fragment f) {
+        Timber.i(f.toString() + " - onFragmentDetached");
+    }
+}

+ 159 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/GlobalConfiguration.java

@@ -0,0 +1,159 @@
+package com.xwkj.rwxffk.app;
+
+import android.app.Application;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.jess.arms.base.delegate.AppLifecycles;
+import com.jess.arms.di.module.GlobalConfigModule;
+import com.jess.arms.http.imageloader.glide.GlideImageLoaderStrategy;
+import com.jess.arms.http.log.RequestInterceptor;
+import com.jess.arms.integration.ConfigModule;
+import com.jess.arms.utils.ArmsUtils;
+import com.squareup.leakcanary.RefWatcher;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import com.xwkj.rwxffk.BuildConfig;
+import com.xwkj.rwxffk.mvp.model.api.Api;
+
+/**
+ * ================================================
+ * App 的全局配置信息在此配置, 需要将此实现类声明到 AndroidManifest 中
+ * ConfigModule 的实现类可以有无数多个, 在 Application 中只是注册回调, 并不会影响性能 (多个 ConfigModule 在多 Module 环境下尤为受用)
+ *
+ * @see com.jess.arms.base.delegate.AppDelegate
+ * @see com.jess.arms.integration.ManifestParser
+ * @see <a href="https://github.com/JessYanCoding/MVPArms/wiki">请配合官方 Wiki 文档学习本框架</a>
+ * @see <a href="https://github.com/JessYanCoding/MVPArms/wiki/UpdateLog">更新日志, 升级必看!</a>
+ * @see <a href="https://github.com/JessYanCoding/MVPArms/wiki/Issues">常见 Issues, 踩坑必看!</a>
+ * @see <a href="https://github.com/JessYanCoding/ArmsComponent/wiki">MVPArms 官方组件化方案 ArmsComponent, 进阶指南!</a>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public final class GlobalConfiguration implements ConfigModule {
+//    public static String sDomain = Api.APP_DOMAIN;
+
+    @Override
+    public void applyOptions(Context context, GlobalConfigModule.Builder builder) {
+        if (!BuildConfig.LOG_DEBUG) { //Release 时, 让框架不再打印 Http 请求和响应的信息
+            builder.printHttpLogLevel(RequestInterceptor.Level.NONE);
+        }
+
+        builder.baseurl(Api.APP_DOMAIN)
+                //强烈建议自己自定义图片加载逻辑, 因为 arms-imageloader-glide 提供的 GlideImageLoaderStrategy 并不能满足复杂的需求
+                //请参考 https://github.com/JessYanCoding/MVPArms/wiki#3.4
+                .imageLoaderStrategy(new GlideImageLoaderStrategy())
+
+                //想支持多 BaseUrl, 以及运行时动态切换任意一个 BaseUrl, 请使用 https://github.com/JessYanCoding/RetrofitUrlManager
+                //如果 BaseUrl 在 App 启动时不能确定, 需要请求服务器接口动态获取, 请使用以下代码
+                //以下方式是 Arms 框架自带的切换 BaseUrl 的方式, 在整个 App 生命周期内只能切换一次, 若需要无限次的切换 BaseUrl, 以及各种复杂的应用场景还是需要使用 RetrofitUrlManager 框架
+                //以下代码只是配置, 还要使用 Okhttp (AppComponent 中提供) 请求服务器获取到正确的 BaseUrl 后赋值给 GlobalConfiguration.sDomain
+                //切记整个过程必须在第一次调用 Retrofit 接口之前完成, 如果已经调用过 Retrofit 接口, 此种方式将不能切换 BaseUrl
+//                .baseurl(new BaseUrl() {
+//                    @Override
+//                    public HttpUrl url() {
+//                        return HttpUrl.parse(sDomain);
+//                    }
+//                })
+
+                //可根据当前项目的情况以及环境为框架某些部件提供自定义的缓存策略, 具有强大的扩展性
+//                .cacheFactory(new Cache.Factory() {
+//                    @NonNull
+//                    @Override
+//                    public Cache build(CacheType type) {
+//                        switch (type.getCacheTypeId()){
+//                            case CacheType.EXTRAS_TYPE_ID:
+//                                return new IntelligentCache(500);
+//                            case CacheType.CACHE_SERVICE_CACHE_TYPE_ID:
+//                                return new Cache(type.calculateCacheSize(context));//自定义 Cache
+//                            default:
+//                                return new LruCache(200);
+//                        }
+//                    }
+//                })
+
+                //若觉得框架默认的打印格式并不能满足自己的需求, 可自行扩展自己理想的打印格式 (以下只是简单实现)
+//                .formatPrinter(new FormatPrinter() {
+//                    @Override
+//                    public void printJsonRequest(Request request, String bodyString) {
+//                        Timber.i("printJsonRequest:" + bodyString);
+//                    }
+//
+//                    @Override
+//                    public void printFileRequest(Request request) {
+//                        Timber.i("printFileRequest:" + request.url().toString());
+//                    }
+//
+//                    @Override
+//                    public void printJsonResponse(long chainMs, boolean isSuccessful, int code,
+//                                                  String headers, MediaType contentType, String bodyString,
+//                                                  List<String> segments, String message, String responseUrl) {
+//                        Timber.i("printJsonResponse:" + bodyString);
+//                    }
+//
+//                    @Override
+//                    public void printFileResponse(long chainMs, boolean isSuccessful, int code, String headers,
+//                                                  List<String> segments, String message, String responseUrl) {
+//                        Timber.i("printFileResponse:" + responseUrl);
+//                    }
+//                })
+
+                //可以自定义一个单例的线程池供全局使用
+//                .executorService(Executors.newCachedThreadPool())
+
+                //这里提供一个全局处理 Http 请求和响应结果的处理类, 可以比客户端提前一步拿到服务器返回的结果, 可以做一些操作, 比如 Token 超时后, 重新获取 Token
+                .globalHttpHandler(new GlobalHttpHandlerImpl(context))
+                //用来处理 RxJava 中发生的所有错误, RxJava 中发生的每个错误都会回调此接口
+                //RxJava 必须要使用 ErrorHandleSubscriber (默认实现 Subscriber 的 onError 方法), 此监听才生效
+                .responseErrorListener(new ResponseErrorListenerImpl())
+                .gsonConfiguration((context1, gsonBuilder) -> {//这里可以自己自定义配置 Gson 的参数
+                    gsonBuilder
+                            .serializeNulls()//支持序列化值为 null 的参数
+                            .enableComplexMapKeySerialization();//支持将序列化 key 为 Object 的 Map, 默认只能序列化 key 为 String 的 Map
+                })
+                .retrofitConfiguration((context1, retrofitBuilder) -> {//这里可以自己自定义配置 Retrofit 的参数, 甚至您可以替换框架配置好的 OkHttpClient 对象 (但是不建议这样做, 这样做您将损失框架提供的很多功能)
+//                    retrofitBuilder.addConverterFactory(FastJsonConverterFactory.create());//比如使用 FastJson 替代 Gson
+                })
+                .okhttpConfiguration((context1, okhttpBuilder) -> {//这里可以自己自定义配置 Okhttp 的参数
+//                    okhttpBuilder.sslSocketFactory(); //支持 Https, 详情请百度
+                    okhttpBuilder.writeTimeout(10, TimeUnit.SECONDS);
+                    //使用一行代码监听 Retrofit/Okhttp 上传下载进度监听, 以及 Glide 加载进度监听, 详细使用方法请查看 https://github.com/JessYanCoding/ProgressManager
+//                    ProgressManager.getInstance().with(okhttpBuilder);
+                    //让 Retrofit 同时支持多个 BaseUrl 以及动态改变 BaseUrl, 详细使用方法请查看 https://github.com/JessYanCoding/RetrofitUrlManager
+//                    RetrofitUrlManager.getInstance().with(okhttpBuilder);
+                })
+                .rxCacheConfiguration((context1, rxCacheBuilder) -> {//这里可以自己自定义配置 RxCache 的参数
+                    rxCacheBuilder.useExpiredDataIfLoaderNotAvailable(true);
+                    //想自定义 RxCache 的缓存文件夹或者解析方式, 如改成 FastJson, 请 return rxCacheBuilder.persistence(cacheDirectory, new FastJsonSpeaker());
+                    //否则请 return null;
+                    return null;
+                });
+    }
+
+    @Override
+    public void injectAppLifecycle(Context context, List<AppLifecycles> lifecycles) {
+        //AppLifecycles 中的所有方法都会在基类 Application 的对应生命周期中被调用, 所以在对应的方法中可以扩展一些自己需要的逻辑
+        //可以根据不同的逻辑添加多个实现类
+        lifecycles.add(new AppLifecyclesImpl());
+    }
+
+    @Override
+    public void injectActivityLifecycle(Context context, List<Application.ActivityLifecycleCallbacks> lifecycles) {
+        //ActivityLifecycleCallbacks 中的所有方法都会在 Activity (包括三方库) 的对应生命周期中被调用, 所以在对应的方法中可以扩展一些自己需要的逻辑
+        //可以根据不同的逻辑添加多个实现类
+        lifecycles.add(new ActivityLifecycleCallbacksImpl());
+    }
+
+    @Override
+    public void injectFragmentLifecycle(Context context, List<FragmentManager.FragmentLifecycleCallbacks> lifecycles) {
+        //FragmentLifecycleCallbacks 中的所有方法都会在 Fragment (包括三方库) 的对应生命周期中被调用, 所以在对应的方法中可以扩展一些自己需要的逻辑
+        //可以根据不同的逻辑添加多个实现类
+        lifecycles.add(new FragmentLifecycleCallbacksImpl());
+    }
+}

+ 116 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/GlobalHttpHandlerImpl.java

@@ -0,0 +1,116 @@
+package com.xwkj.rwxffk.app;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.text.TextUtils;
+
+import com.jess.arms.http.GlobalHttpHandler;
+import com.xwkj.rwxffk.app.utils.UploadUtil;
+import com.zkjc.common.utils.DataToNetUtil;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+import okhttp3.HttpUrl;
+import okhttp3.Interceptor;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+
+/**
+ * ================================================
+ * 展示 {@link GlobalHttpHandler} 的用法
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 13:54
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public class GlobalHttpHandlerImpl implements GlobalHttpHandler {
+    private Context context;
+
+    public GlobalHttpHandlerImpl(Context context) {
+        this.context = context;
+    }
+
+    /**
+     * 这里可以先客户端一步拿到每一次 Http 请求的结果, 可以先解析成 Json, 再做一些操作, 如检测到 token 过期后
+     * 重新请求 token, 并重新执行请求
+     *
+     * @param httpResult 服务器返回的结果 (已被框架自动转换为字符串)
+     * @param chain      {@link Interceptor.Chain}
+     * @param response   {@link Response}
+     * @return
+     */
+    @Override
+    public Response onHttpResultResponse(String httpResult, Interceptor.Chain chain, Response response) {
+        /* 这里如果发现 token 过期, 可以先请求最新的 token, 然后在拿新的 token 放入 Request 里去重新请求
+        注意在这个回调之前已经调用过 proceed(), 所以这里必须自己去建立网络请求, 如使用 Okhttp 使用新的 Request 去请求
+        create a new request and modify it accordingly using the new token
+        Request newRequest = chain.request().newBuilder().header("token", newToken)
+                             .build();
+
+        retry the request
+
+        response.body().close();
+        如果使用 Okhttp 将新的请求, 请求成功后, 再将 Okhttp 返回的 Response return 出去即可
+        如果不需要返回新的结果, 则直接把参数 response 返回出去即可*/
+        System.out.println("返回结果" + httpResult);
+       /* if (isTokenExpired(response)) {
+
+        }*/
+
+        ResponseBody responseBody = response.body();
+        HttpUrl url = response.request().url();
+        if (!url.toString().contains("https://restapi.amap.com/v3/geocode/regeo") && !url.toString().contains("csjcInfo/info/yhlr")){
+            if (responseBody != null) {
+                try {
+                    //response = getProcessResponse(response, responseBody);
+                    response = DataToNetUtil.getProcessResponse(response, responseBody);
+                } catch (IOException e) {
+                    //如果发生异常直接返回
+                    e.printStackTrace();
+                    return response;
+                }
+            }
+        }
+        return response;
+    }
+
+
+    /**
+     * 这里可以在请求服务器之前拿到 {@link Request}, 做一些操作比如给 {@link Request} 统一添加 token 或者 header 以及参数加密等操作
+     *
+     * @param chain   {@link Interceptor.Chain}
+     * @param request {@link Request}
+     * @return
+     */
+    @Override
+    public Request onHttpRequestBefore(Interceptor.Chain chain, Request request) {
+        /* 如果需要在请求服务器之前做一些操作, 则重新构建一个做过操作的 Request 并 return, 如增加 Header、Params 等请求信息, 不做操作则直接返回参数 request
+        return chain.request().newBuilder().header("token", tokenId)
+                              .build(); */
+        SharedPreferences sharedPreferences = context.getSharedPreferences("sys", Context.MODE_PRIVATE);
+        String token = sharedPreferences.getString("token", "");
+        Request.Builder builder = chain.request().newBuilder();
+        builder.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0");
+
+        HttpUrl url = request.url();
+        //  List<String> list = Arrays.asList(urls);
+        /*if (!list.contains(url.toString())) {
+            builder.header("phone", "phone");
+        }*/
+
+        if (!TextUtils.isEmpty(token))
+            builder.header("Blade-Auth", "bearer " + token);
+
+        Request build = builder.build();
+//        sharedPreferences.edit().putString("request", request.body().toString()).apply();
+        if (!url.toString().contains(UploadUtil.PATH) && !url.toString().contains("csjcInfo/info/yhlr")) {
+            Charset charset = Charset.forName("UTF-8");
+            build = DataToNetUtil.getJmRequest(build, charset);
+        }
+        return build;
+//        return build;
+    }
+}

+ 64 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/ResponseErrorListenerImpl.java

@@ -0,0 +1,64 @@
+package com.xwkj.rwxffk.app;
+
+import android.content.Context;
+import android.net.ParseException;
+
+import com.google.gson.JsonIOException;
+import com.google.gson.JsonParseException;
+import com.jess.arms.utils.ArmsUtils;
+
+import org.json.JSONException;
+
+import java.net.SocketTimeoutException;
+import java.net.UnknownHostException;
+
+import me.jessyan.rxerrorhandler.handler.listener.ResponseErrorListener;
+import retrofit2.HttpException;
+import timber.log.Timber;
+
+/**
+ * ================================================
+ * 展示 {@link ResponseErrorListener} 的用法
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public class ResponseErrorListenerImpl implements ResponseErrorListener {
+
+    @Override
+    public void handleResponseError(Context context, Throwable t) {
+        Timber.tag("Catch-Error").w(t.getMessage());
+        //这里不光只能打印错误, 还可以根据不同的错误做出不同的逻辑处理
+        //这里只是对几个常用错误进行简单的处理, 展示这个类的用法, 在实际开发中请您自行对更多错误进行更严谨的处理
+        String msg = "未知错误";
+        if (t instanceof UnknownHostException) {
+            msg = "网络不可用";
+        } else if (t instanceof SocketTimeoutException) {
+            msg = "请求网络超时";
+        } else if (t instanceof HttpException) {
+            HttpException httpException = (HttpException) t;
+            msg = convertStatusCode(httpException);
+        } else if (t instanceof JsonParseException || t instanceof ParseException || t instanceof JSONException || t instanceof JsonIOException) {
+            msg = "数据解析错误";
+        }
+        ArmsUtils.snackbarText(msg);
+    }
+
+    private String convertStatusCode(HttpException httpException) {
+        String msg;
+        if (httpException.code() == 500) {
+            msg = "服务器发生错误";
+        } else if (httpException.code() == 404) {
+            msg = "请求地址不存在";
+        } else if (httpException.code() == 403) {
+            msg = "请求被服务器拒绝";
+        } else if (httpException.code() == 307) {
+            msg = "请求被重定向到其他页面";
+        } else {
+            msg = httpException.message();
+        }
+        return msg;
+    }
+}

+ 337 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/BusEntity.java

@@ -0,0 +1,337 @@
+package com.xwkj.rwxffk.app.utils;
+
+public class BusEntity {
+
+    /**
+     * jsonrpc : 2.0
+     * id : 1
+     * method : query
+     * params : {"data":{"version":"11111","sessionId":"e68f26bb70ab41b8a9fa2a37b34ab1bc","userInfo":{"userId":"001234","userName":"张三","userDeptNo":"440000000000","sn":"39a22c9d353f4ea8bbf5a8703799f400","sfzh":"4111231234566789741256893","extAttr":{}},"source":{"sourceId":"DS-01,DS-02"},"dataObjId":"czrk","condition":"name = '李四' and age < 30","fields":"name,age,sex,phone","orderBy":"name desc, age desc","page":{"pageSize":10,"pageNo":1}},"sign":"1qqqqwwwwwwwwwwwwww"}
+     */
+
+    private String jsonrpc;
+    private String id;
+    private String method;
+    private ParamsBean params;
+
+    public String getJsonrpc() {
+        return jsonrpc;
+    }
+
+    public void setJsonrpc(String jsonrpc) {
+        this.jsonrpc = jsonrpc;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getMethod() {
+        return method;
+    }
+
+    public void setMethod(String method) {
+        this.method = method;
+    }
+
+    public ParamsBean getParams() {
+        return params;
+    }
+
+    public void setParams(ParamsBean params) {
+        this.params = params;
+    }
+
+    public static class ParamsBean {
+        /**
+         * data : {"version":"11111","sessionId":"e68f26bb70ab41b8a9fa2a37b34ab1bc","userInfo":{"userId":"001234","userName":"张三","userDeptNo":"440000000000","sn":"39a22c9d353f4ea8bbf5a8703799f400","sfzh":"4111231234566789741256893","extAttr":{}},"source":{"sourceId":"DS-01,DS-02"},"dataObjId":"czrk","condition":"name = '李四' and age < 30","fields":"name,age,sex,phone","orderBy":"name desc, age desc","page":{"pageSize":10,"pageNo":1}}
+         * sign : 1qqqqwwwwwwwwwwwwww
+         */
+
+        private DataBean data;
+        private String sign;
+
+        public DataBean getData() {
+            return data;
+        }
+
+        public void setData(DataBean data) {
+            this.data = data;
+        }
+
+        public String getSign() {
+            return sign;
+        }
+
+        public void setSign(String sign) {
+            this.sign = sign;
+        }
+
+        public static class DataBean {
+            /**
+             * version : 11111
+             * sessionId : e68f26bb70ab41b8a9fa2a37b34ab1bc
+             * userInfo : {"userId":"001234","userName":"张三","userDeptNo":"440000000000","sn":"39a22c9d353f4ea8bbf5a8703799f400","sfzh":"4111231234566789741256893","extAttr":{}}
+             * source : {"sourceId":"DS-01,DS-02"}
+             * dataObjId : czrk
+             * condition : name = '李四' and age < 30
+             * fields : name,age,sex,phone
+             * orderBy : name desc, age desc
+             * page : {"pageSize":10,"pageNo":1}
+             */
+
+            private String version;
+            private String appId;
+            private String timestamp;
+            private String nonce;
+            private String sign;
+
+            public String getAppId() {
+                return appId;
+            }
+
+            public void setAppId(String appId) {
+                this.appId = appId;
+            }
+
+            public String getTimestamp() {
+                return timestamp;
+            }
+
+            public void setTimestamp(String timestamp) {
+                this.timestamp = timestamp;
+            }
+
+            public String getNonce() {
+                return nonce;
+            }
+
+            public void setNonce(String nonce) {
+                this.nonce = nonce;
+            }
+
+            public String getSign() {
+                return sign;
+            }
+
+            public void setSign(String sign) {
+                this.sign = sign;
+            }
+
+            private String sessionId;
+            private UserInfoBean userInfo;
+            private SourceBean source;
+            private String dataObjId;
+            private String condition;
+            private String fields;
+            private String orderBy;
+            private PageBean page;
+
+            public String getVersion() {
+                return version;
+            }
+
+            public void setVersion(String version) {
+                this.version = version;
+            }
+
+            public String getSessionId() {
+                return sessionId;
+            }
+
+            public void setSessionId(String sessionId) {
+                this.sessionId = sessionId;
+            }
+
+            public UserInfoBean getUserInfo() {
+                return userInfo;
+            }
+
+            public void setUserInfo(UserInfoBean userInfo) {
+                this.userInfo = userInfo;
+            }
+
+            public SourceBean getSource() {
+                return source;
+            }
+
+            public void setSource(SourceBean source) {
+                this.source = source;
+            }
+
+            public String getDataObjId() {
+                return dataObjId;
+            }
+
+            public void setDataObjId(String dataObjId) {
+                this.dataObjId = dataObjId;
+            }
+
+            public String getCondition() {
+                return condition;
+            }
+
+            public void setCondition(String condition) {
+                this.condition = condition;
+            }
+
+            public String getFields() {
+                return fields;
+            }
+
+            public void setFields(String fields) {
+                this.fields = fields;
+            }
+
+            public String getOrderBy() {
+                return orderBy;
+            }
+
+            public void setOrderBy(String orderBy) {
+                this.orderBy = orderBy;
+            }
+
+            public PageBean getPage() {
+                return page;
+            }
+
+            public void setPage(PageBean page) {
+                this.page = page;
+            }
+
+            public static class UserInfoBean {
+                /**
+                 * userId : 001234
+                 * userName : 张三
+                 * userDeptNo : 440000000000
+                 * sn : 39a22c9d353f4ea8bbf5a8703799f400
+                 * sfzh : 4111231234566789741256893
+                 * extAttr : {}
+                 */
+
+                private String userId;
+                private String userName;
+                private String userDeptNo;
+                private String sn;
+                private String sfzh;
+                private ExtAttrBean extAttr;
+
+                public String getUserId() {
+                    return userId;
+                }
+
+                public void setUserId(String userId) {
+                    this.userId = userId;
+                }
+
+                public String getUserName() {
+                    return userName;
+                }
+
+                public void setUserName(String userName) {
+                    this.userName = userName;
+                }
+
+                public String getUserDeptNo() {
+                    return userDeptNo;
+                }
+
+                public void setUserDeptNo(String userDeptNo) {
+                    this.userDeptNo = userDeptNo;
+                }
+
+                public String getSn() {
+                    return sn;
+                }
+
+                public void setSn(String sn) {
+                    this.sn = sn;
+                }
+
+                public String getSfzh() {
+                    return sfzh;
+                }
+
+                public void setSfzh(String sfzh) {
+                    this.sfzh = sfzh;
+                }
+
+                public ExtAttrBean getExtAttr() {
+                    return extAttr;
+                }
+
+                public void setExtAttr(ExtAttrBean extAttr) {
+                    this.extAttr = extAttr;
+                }
+
+                public static class ExtAttrBean {
+                    private String ip;
+                    private String port;
+
+                    public String getIp() {
+                        return ip;
+                    }
+
+                    public void setIp(String ip) {
+                        this.ip = ip;
+                    }
+
+                    public String getPort() {
+                        return port;
+                    }
+
+                    public void setPort(String port) {
+                        this.port = port;
+                    }
+                }
+            }
+
+            public static class SourceBean {
+                /**
+                 * sourceId : DS-01,DS-02
+                 */
+
+                private String sourceId;
+
+                public String getSourceId() {
+                    return sourceId;
+                }
+
+                public void setSourceId(String sourceId) {
+                    this.sourceId = sourceId;
+                }
+            }
+
+            public static class PageBean {
+                /**
+                 * pageSize : 10
+                 * pageNo : 1
+                 */
+
+                private int pageSize;
+                private int pageNo;
+
+                public int getPageSize() {
+                    return pageSize;
+                }
+
+                public void setPageSize(int pageSize) {
+                    this.pageSize = pageSize;
+                }
+
+                public int getPageNo() {
+                    return pageNo;
+                }
+
+                public void setPageNo(int pageNo) {
+                    this.pageNo = pageNo;
+                }
+            }
+        }
+    }
+}
+

+ 213 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/BusResEntity.java

@@ -0,0 +1,213 @@
+package com.xwkj.rwxffk.app.utils;
+
+import java.util.List;
+
+public class BusResEntity {
+
+    /**
+     * jsonrpc : 2.0
+     * id : 1
+     * result : {"code":"1","msg":"OK","data":[{"sourceId":"DS-01","fieldValues":[{"field":"name","value":"小明","isCode":0,"codeValue":""},{"field":"age","value":"20","isCode":0,"codeValue":""},{"field":"sex","value":"男","isCode":1,"codeValue":"2"},{"field":"phone","value":"15501011234","isCode":0,"codeValue":""}]}],"page":{"pageSize":10,"pageNo":1,"total":1},"sign":"1qqqqwwwwwwwwwwwwww"}
+     */
+
+    private String jsonrpc;
+    private String id;
+    private ResultBean result;
+    private int code;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getJsonrpc() {
+        return jsonrpc;
+    }
+
+    public void setJsonrpc(String jsonrpc) {
+        this.jsonrpc = jsonrpc;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public ResultBean getResult() {
+        return result;
+    }
+
+    public void setResult(ResultBean result) {
+        this.result = result;
+    }
+
+    public static class ResultBean {
+        /**
+         * code : 1
+         * msg : OK
+         * data : [{"sourceId":"DS-01","fieldValues":[{"field":"name","value":"小明","isCode":0,"codeValue":""},{"field":"age","value":"20","isCode":0,"codeValue":""},{"field":"sex","value":"男","isCode":1,"codeValue":"2"},{"field":"phone","value":"15501011234","isCode":0,"codeValue":""}]}]
+         * page : {"pageSize":10,"pageNo":1,"total":1}
+         * sign : 1qqqqwwwwwwwwwwwwww
+         */
+
+        private String code;
+        private String msg;
+        private PageBean page;
+        private String sign;
+        private List<DataBean> data;
+
+        public String getCode() {
+            return code;
+        }
+
+        public void setCode(String code) {
+            this.code = code;
+        }
+
+        public String getMsg() {
+            return msg;
+        }
+
+        public void setMsg(String msg) {
+            this.msg = msg;
+        }
+
+        public PageBean getPage() {
+            return page;
+        }
+
+        public void setPage(PageBean page) {
+            this.page = page;
+        }
+
+        public String getSign() {
+            return sign;
+        }
+
+        public void setSign(String sign) {
+            this.sign = sign;
+        }
+
+        public List<DataBean> getData() {
+            return data;
+        }
+
+        public void setData(List<DataBean> data) {
+            this.data = data;
+        }
+
+        public static class PageBean {
+            /**
+             * pageSize : 10
+             * pageNo : 1
+             * total : 1
+             */
+
+            private int pageSize;
+            private int pageNo;
+            private int total;
+
+            public int getPageSize() {
+                return pageSize;
+            }
+
+            public void setPageSize(int pageSize) {
+                this.pageSize = pageSize;
+            }
+
+            public int getPageNo() {
+                return pageNo;
+            }
+
+            public void setPageNo(int pageNo) {
+                this.pageNo = pageNo;
+            }
+
+            public int getTotal() {
+                return total;
+            }
+
+            public void setTotal(int total) {
+                this.total = total;
+            }
+        }
+
+        public static class DataBean {
+            /**
+             * sourceId : DS-01
+             * fieldValues : [{"field":"name","value":"小明","isCode":0,"codeValue":""},{"field":"age","value":"20","isCode":0,"codeValue":""},{"field":"sex","value":"男","isCode":1,"codeValue":"2"},{"field":"phone","value":"15501011234","isCode":0,"codeValue":""}]
+             */
+
+            private String sourceId;
+            private List<FieldValuesBean> fieldValues;
+
+            public String getSourceId() {
+                return sourceId;
+            }
+
+            public void setSourceId(String sourceId) {
+                this.sourceId = sourceId;
+            }
+
+            public List<FieldValuesBean> getFieldValues() {
+                return fieldValues;
+            }
+
+            public void setFieldValues(List<FieldValuesBean> fieldValues) {
+                this.fieldValues = fieldValues;
+            }
+
+            public static class FieldValuesBean {
+                /**
+                 * field : name
+                 * value : 小明
+                 * isCode : 0
+                 * codeValue :
+                 */
+
+                private String field;
+                private String value;
+                private int isCode;
+                private String codeValue;
+
+                public String getField() {
+                    return field;
+                }
+
+                public void setField(String field) {
+                    this.field = field;
+                }
+
+                public String getValue() {
+                    return value;
+                }
+
+                public void setValue(String value) {
+                    this.value = value;
+                }
+
+                public int getIsCode() {
+                    return isCode;
+                }
+
+                public void setIsCode(int isCode) {
+                    this.isCode = isCode;
+                }
+
+                public String getCodeValue() {
+                    return codeValue;
+                }
+
+                public void setCodeValue(String codeValue) {
+                    this.codeValue = codeValue;
+                }
+            }
+        }
+    }
+}

+ 9 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/CommonInterFace.java

@@ -0,0 +1,9 @@
+package com.xwkj.rwxffk.app.utils;
+
+public interface CommonInterFace {
+    void onSuccess(String result);
+
+    void onError(Throwable throwable);
+
+    void onFinsh();
+}

+ 52 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/Location.java

@@ -0,0 +1,52 @@
+package com.xwkj.rwxffk.app.utils;
+
+import java.io.Serializable;
+
+public class Location implements Serializable {
+    private double latitude;
+
+    private double longitude;
+    private double altitude;
+    private String address;
+
+    @Override
+    public String toString() {
+        return "Location{" +
+                "latitude=" + latitude +
+                ", longitude=" + longitude +
+                '}';
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public double getAltitude() {
+        return altitude;
+    }
+
+    public void setAltitude(double altitude) {
+        this.altitude = altitude;
+    }
+
+    public double getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(double latitude) {
+        this.latitude = latitude;
+    }
+
+    public double getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(double longitude) {
+        this.longitude = longitude;
+    }
+}
+

+ 306 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/Login.java

@@ -0,0 +1,306 @@
+package com.xwkj.rwxffk.app.utils;
+
+public class Login {
+    /**
+     * tenant_id : 000000
+     * user_id : 1598502999054856194
+     * dept_id : 1465202794308374530
+     * post_id : 1123598817738675208
+     * role_id : 1123598816738675202,1123598816738675203
+     * oauth_id :
+     * account : 111146
+     * user_name : 111146
+     * nick_name : 龙腾
+     * role_name : user,hr
+     * avatar :
+     * access_token : eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJpc3N1c2VyIiwiYXVkIjoiYXVkaWVuY2UiLCJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJ1c2VyX25hbWUiOiIxMTExNDYiLCJ0b2tlbl90eXBlIjoiYWNjZXNzX3Rva2VuIiwicm9sZV9uYW1lIjoidXNlcixociIsInBvbGljZU51bWJlciI6IjExMTE0NiIsInBvc3RfaWQiOiIxMTIzNTk4ODE3NzM4Njc1MjA4IiwidXNlcl9pZCI6IjE1OTg1MDI5OTkwNTQ4NTYxOTQiLCJyb2xlX2lkIjoiMTEyMzU5ODgxNjczODY3NTIwMiwxMTIzNTk4ODE2NzM4Njc1MjAzIiwicGhvbmUiOiIxMzExMjMxMTIzMSIsIm5pY2tfbmFtZSI6Ium-meiFviIsImRldGFpbCI6eyJ0eXBlIjoid2ViIn0sImRlcHRfaWQiOiIxNDY1MjAyNzk0MzA4Mzc0NTMwIiwiYWNjb3VudCI6IjExMTE0NiIsImNsaWVudF9pZCI6InNhYmVyIiwiZXhwIjoxNjcwMjAyMzQwLCJuYmYiOjE2NzAyMDIzMTB9._93vK9m5436tzFaXGcciCKOHEacGv8PNhZ57c9DpOUpGbI-qh8e62ht4T2PBmkEXsAhuEy1b-7u9R3Qicdh9Xw
+     * refresh_token : eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJpc3N1c2VyIiwiYXVkIjoiYXVkaWVuY2UiLCJ1c2VyX2lkIjoiMTU5ODUwMjk5OTA1NDg1NjE5NCIsInJvbGVfaWQiOiIxMTIzNTk4ODE2NzM4Njc1MjAyLDExMjM1OTg4MTY3Mzg2NzUyMDMiLCJ0b2tlbl90eXBlIjoicmVmcmVzaF90b2tlbiIsImRlcHRfaWQiOiIxNDY1MjAyNzk0MzA4Mzc0NTMwIiwiY2xpZW50X2lkIjoic2FiZXIiLCJleHAiOjE2NzA4MDcxMTAsIm5iZiI6MTY3MDIwMjMxMH0.KOY_zzX-QPt8BqDlLrFTZ1bK7WCmNzWey-f62BrCJ-_To7wo4LIfkogtjOkgIorEFFOXP7i-mbpzHFWbfnIfqQ
+     * token_type : bearer
+     * expires_in : 30
+     * detail : {"type":"web"}
+     * license : powered by bladex
+     * phone : 13112311231
+     * policeNumber : 111146
+     */
+
+    private String tenant_id;
+    private String user_id;
+    private String dept_id;
+    private String post_id;
+    private String role_id;
+    private String oauth_id;
+    private String account;
+    private String user_name;
+    private String nick_name;
+    private String role_name;
+    private String real_name;
+    private String pcsDm;
+    private String zp;
+    private String mjname;
+    private String mjId;
+    private String deptCategory; // 7代表社区
+    private String sspcs;
+    private String ancestors;
+
+    public String getAncestors() {
+        return ancestors;
+    }
+
+    public void setAncestors(String ancestors) {
+        this.ancestors = ancestors;
+    }
+
+    public String getDeptCategory() {
+        return deptCategory;
+    }
+
+    public void setDeptCategory(String deptCategory) {
+        this.deptCategory = deptCategory;
+    }
+
+    public String getMjname() {
+        return mjname;
+    }
+
+    public void setMjname(String mjname) {
+        this.mjname = mjname;
+    }
+
+    public String getMjId() {
+        return mjId;
+    }
+
+    public void setMjId(String mjId) {
+        this.mjId = mjId;
+    }
+
+    public String getSspcs() {
+        return sspcs;
+    }
+
+    public void setSspcs(String sspcs) {
+        this.sspcs = sspcs;
+    }
+
+    public String getReal_name() {
+        return real_name;
+    }
+
+    public String getPcsDm() {
+        return pcsDm;
+    }
+
+    public String getZp() {
+        return zp;
+    }
+
+    public void setZp(String zp) {
+        this.zp = zp;
+    }
+
+    public void setPcsDm(String pcsDm) {
+        this.pcsDm = pcsDm;
+    }
+
+    public void setReal_name(String real_name) {
+        this.real_name = real_name;
+    }
+
+    private String avatar;
+    private String access_token;
+    private String refresh_token;
+    private String token_type;
+    private int expires_in;
+    private DetailBean detail;
+    private String license;
+    private String phone;
+    private String policeNumber;
+    private String pcsmc;
+
+    public String getPcsmc() {
+        return pcsmc;
+    }
+
+    public void setPcsmc(String pcsmc) {
+        this.pcsmc = pcsmc;
+    }
+
+    public String getDept_name() {
+        return dept_name;
+    }
+
+    public void setDept_name(String dept_name) {
+        this.dept_name = dept_name;
+    }
+
+    private String dept_name;
+
+    public String getTenant_id() {
+        return tenant_id;
+    }
+
+    public void setTenant_id(String tenant_id) {
+        this.tenant_id = tenant_id;
+    }
+
+    public String getUser_id() {
+        return user_id;
+    }
+
+    public void setUser_id(String user_id) {
+        this.user_id = user_id;
+    }
+
+    public String getDept_id() {
+        return dept_id;
+    }
+
+    public void setDept_id(String dept_id) {
+        this.dept_id = dept_id;
+    }
+
+    public String getPost_id() {
+        return post_id;
+    }
+
+    public void setPost_id(String post_id) {
+        this.post_id = post_id;
+    }
+
+    public String getRole_id() {
+        return role_id;
+    }
+
+    public void setRole_id(String role_id) {
+        this.role_id = role_id;
+    }
+
+    public String getOauth_id() {
+        return oauth_id;
+    }
+
+    public void setOauth_id(String oauth_id) {
+        this.oauth_id = oauth_id;
+    }
+
+    public String getAccount() {
+        return account;
+    }
+
+    public void setAccount(String account) {
+        this.account = account;
+    }
+
+    public String getUser_name() {
+        return user_name;
+    }
+
+    public void setUser_name(String user_name) {
+        this.user_name = user_name;
+    }
+
+    public String getNick_name() {
+        return nick_name;
+    }
+
+    public void setNick_name(String nick_name) {
+        this.nick_name = nick_name;
+    }
+
+    public String getRole_name() {
+        return role_name;
+    }
+
+    public void setRole_name(String role_name) {
+        this.role_name = role_name;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getAccess_token() {
+        return access_token;
+    }
+
+    public void setAccess_token(String access_token) {
+        this.access_token = access_token;
+    }
+
+    public String getRefresh_token() {
+        return refresh_token;
+    }
+
+    public void setRefresh_token(String refresh_token) {
+        this.refresh_token = refresh_token;
+    }
+
+    public String getToken_type() {
+        return token_type;
+    }
+
+    public void setToken_type(String token_type) {
+        this.token_type = token_type;
+    }
+
+    public int getExpires_in() {
+        return expires_in;
+    }
+
+    public void setExpires_in(int expires_in) {
+        this.expires_in = expires_in;
+    }
+
+    public DetailBean getDetail() {
+        return detail;
+    }
+
+    public void setDetail(DetailBean detail) {
+        this.detail = detail;
+    }
+
+    public String getLicense() {
+        return license;
+    }
+
+    public void setLicense(String license) {
+        this.license = license;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getPoliceNumber() {
+        return policeNumber;
+    }
+
+    public void setPoliceNumber(String policeNumber) {
+        this.policeNumber = policeNumber;
+    }
+
+    public static class DetailBean {
+        /**
+         * type : web
+         */
+
+        private String type;
+
+        public String getType() {
+            return type;
+        }
+
+        public void setType(String type) {
+            this.type = type;
+        }
+    }
+}
+

+ 223 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/ReqToBus.java

@@ -0,0 +1,223 @@
+package com.xwkj.rwxffk.app.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.utils.ArmsUtils;
+
+import com.xwkj.rwxffk.mvp.model.api.Api;
+import com.xwkj.rwxffk.mvp.model.api.service.ApiService;
+import com.zkjc.common.utils.ApkUtils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+
+public class ReqToBus {
+    private Context context;
+    /*  private String reqKey;
+      private String reqValue;
+      private String dataObjId;*/
+    private SharedPreferences sp;
+    private static ReqToBus reqToBus;
+    private CommonInterFace interFace;
+
+    //初始化
+    public static synchronized ReqToBus getInstance() {
+        if (reqToBus == null) {
+            synchronized (ReqToBus.class) {
+                if (reqToBus == null) {
+                    reqToBus = new ReqToBus();
+                }
+            }
+        }
+        return reqToBus;
+    }
+
+    public ReqToBus init(Context context) {
+        this.context = context;
+        try {
+            sp = context.getSharedPreferences("sys", Context.MODE_PRIVATE);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+        return this;
+    }
+
+    public void getRequest(Map<String, Object> reqValue, CommonInterFace interFace) {
+
+        String token = sp.getString("token", " ");
+        reqValue.put("token", "bearer " + token);
+        reqValue.put("version_code", ApkUtils.getVersionCode(context));
+
+        //正式环境
+        String str = new Gson().toJson(reqValue);
+        String requstJson = getRequstJson(str);
+        System.out.println("dssd" + requstJson);
+        RequestBody requestBody = RequestBody.create(
+                MediaType.parse("application/json; charset=utf-8"),
+                requstJson
+        );
+        ArmsUtils.obtainAppComponentFromContext(context).repositoryManager()
+                .obtainRetrofitService(ApiService.class).CommonReq(Api.url, requestBody)
+                .subscribeOn(Schedulers.io())
+                .doOnSubscribe(disposable -> {
+                    addDispose(disposable);//在订阅时必须调用这个方法,不然Activity退出时可能内存泄漏
+                })
+                .subscribeOn(AndroidSchedulers.mainThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new ErrorHandleSubscriber<JsonObject>(ArmsUtils.obtainAppComponentFromContext(context).rxErrorHandler()) {
+                    @Override
+                    public void onNext(JsonObject jsonObject) {
+                        try {
+                            String json = jsonObject.toString();
+                            BusResEntity busEntity = new Gson().fromJson(json, BusResEntity.class);
+                            if (busEntity.getCode() == 401) {
+                                ToastUtils.show("你的账号已被其他设备登录,请重新登录");
+                               /* sp.edit().putBoolean("isFirst", true).commit();
+                                EventBus.getDefault().post(1);
+                                ArmsUtils.startActivity(LoginActivity.class);*/
+                            }
+                            BusResEntity.ResultBean result = busEntity.getResult();
+                            String code = result.getCode();
+                            if (code.equals("1")) {
+
+                                List<BusResEntity.ResultBean.DataBean> data = result.getData();
+                                if (data.size() > 0) {
+                                    String methodName = (String) reqValue.get("methodName");
+                                    String className = (String) reqValue.get("className");
+                                    String value = data.get(0).getFieldValues().get(0).getValue();
+                                    Log.e("eee", "Controller == " + className + " methodName == " + methodName + ":::: value == " + value);
+                                    JsonObject object = new JsonParser().parse(value).getAsJsonObject();
+                                    if (object.has("msg")) {
+                                        String msg = object.get("msg").getAsString();
+                                        if (!TextUtils.isEmpty(msg) && msg.contains("重新登录")) {
+                                            ToastUtils.show("登录已过期,请重新登录");
+                                           /* EventBus.getDefault().post(1);
+                                            sp.edit().putBoolean("isFirst", true).commit();
+                                            ArmsUtils.startActivity(LoginActivity.class);*/
+                                        }
+                                    }
+                                    interFace.onSuccess(value);
+                                } else {
+                                    // ToastUtils.show("数据请求失败");
+                                }
+
+                            } else {
+                                ToastUtils.show(result.getMsg());
+                            }
+
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        interFace.onError(t);
+
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        super.onComplete();
+                        interFace.onFinsh();
+
+                    }
+                });
+
+    }
+
+
+    private CompositeDisposable mCompositeDisposable;
+
+    public void addDispose(Disposable disposable) {
+        if (mCompositeDisposable == null) {
+            mCompositeDisposable = new CompositeDisposable();
+        }
+        mCompositeDisposable.add(disposable);//将所有 Disposable 放入集中处理
+    }
+
+
+    public void unDispose() {
+
+        if (mCompositeDisposable != null) {
+            mCompositeDisposable.clear();//保证 Activity 结束时取消所有正在执行的订阅
+        }
+    }
+
+    public static String getRequstJson(String reqValue) {
+        String dataObjId = "t_jdrh";
+        String method = "query";
+        BusEntity entity = new BusEntity();
+        entity.setId(UUID.randomUUID().toString());
+        entity.setJsonrpc("2.0");
+        BusEntity.ParamsBean params = new BusEntity.ParamsBean();
+        BusEntity.ParamsBean.DataBean data = new BusEntity.ParamsBean.DataBean();
+        if (method.equals("connect")) {
+            entity.setMethod("connect");
+            data.setAppId("4eeb7eb13f9c4753ad3263de95b71ff1");
+            SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+            data.setTimestamp(format.format(new Date()));
+            data.setNonce("vMksKOwd");
+            data.setSign("");
+        } else {
+            entity.setMethod("query");
+
+            BusEntity.ParamsBean.DataBean.UserInfoBean userInfo = new BusEntity.ParamsBean.DataBean.UserInfoBean();
+            userInfo.setUserId("000000");
+            userInfo.setUserName("张三");
+            userInfo.setSn("39a22c9d353f4ea8bbf5a8703799f400");
+            userInfo.setUserDeptNo("220000000000");
+            BusEntity.ParamsBean.DataBean.UserInfoBean.ExtAttrBean extAttr = new BusEntity.ParamsBean.DataBean.UserInfoBean.ExtAttrBean();
+            extAttr.setIp("20.25.1.126");
+            extAttr.setPort("6543");
+            userInfo.setExtAttr(extAttr);
+
+            BusEntity.ParamsBean.DataBean.SourceBean source = new BusEntity.ParamsBean.DataBean.SourceBean();
+            source.setSourceId("ef6dea086e9b4aa3b26749661fdd315c");
+            BusEntity.ParamsBean.DataBean.PageBean page = new BusEntity.ParamsBean.DataBean.PageBean();
+            page.setPageNo(1);
+            page.setPageSize(10);
+            data.setPage(page);
+            data.setOrderBy("");
+            data.setFields("data");
+            data.setCondition("");
+
+
+            data.setDataObjId(dataObjId);
+            data.setSource(source);
+            data.setUserInfo(userInfo);
+            data.setSessionId("4eeb7eb13f9c4753ad3263de95b71ff1");
+            data.setCondition("data='" + reqValue + "'");
+        }
+
+        data.setVersion("20190221");
+        params.setData(data);
+        params.setSign("1qqqqwwwwwwwwwwwwww");
+        entity.setParams(params);
+        String json = new GsonBuilder().disableHtmlEscaping().create().toJson(entity).toString();
+        return json;
+    }
+
+
+}

+ 51 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/RxUtils.java

@@ -0,0 +1,51 @@
+package com.xwkj.rwxffk.app.utils;
+
+import com.jess.arms.mvp.IView;
+import com.jess.arms.utils.RxLifecycleUtils;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableTransformer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.functions.Action;
+import io.reactivex.functions.Consumer;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * ================================================
+ * 放置便于使用 RxJava 的一些工具方法
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 13:54
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public class RxUtils {
+
+    private RxUtils() {
+    }
+
+    public static <T> ObservableTransformer<T, T> applySchedulers(final IView view) {
+        return new ObservableTransformer<T, T>() {
+            @Override
+            public Observable<T> apply(Observable<T> observable) {
+                return observable.subscribeOn(Schedulers.io())
+                        .doOnSubscribe(new Consumer<Disposable>() {
+                            @Override
+                            public void accept(@NonNull Disposable disposable) throws Exception {
+                                view.showLoading();//显示进度条
+                            }
+                        })
+                        .subscribeOn(AndroidSchedulers.mainThread())
+                        .observeOn(AndroidSchedulers.mainThread())
+                        .doFinally(new Action() {
+                            @Override
+                            public void run() {
+                                view.hideLoading();//隐藏进度条
+                            }
+                        }).compose(RxLifecycleUtils.bindToLifecycle(view));
+            }
+        };
+    }
+}

+ 256 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/app/utils/UploadUtil.java

@@ -0,0 +1,256 @@
+package com.xwkj.rwxffk.app.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.location.Location;
+
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+import com.jess.arms.utils.ArmsUtils;
+
+import com.xwkj.rwxffk.mvp.model.api.Api;
+
+import com.xwkj.rwxffk.mvp.model.api.service.ApiService;
+import com.zkjc.common.utils.UUIDUtils;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
+
+public class UploadUtil {
+    public static final String PATH = "/blade-resource/oss/endpoint/put-file-app";
+    private Context context;
+    /*  private String reqKey;
+      private String reqValue;
+      private String dataObjId;*/
+    private SharedPreferences sp;
+    private static UploadUtil reqToBus;
+    private CommonInterFace interFace;
+
+    //初始化
+    public static synchronized UploadUtil getInstance() {
+        if (reqToBus == null) {
+            synchronized (UploadUtil.class) {
+                if (reqToBus == null) {
+                    reqToBus = new UploadUtil();
+                }
+            }
+        }
+        return reqToBus;
+    }
+
+    public UploadUtil init(Context context) {
+        this.context = context;
+        sp = context.getSharedPreferences("sys", Context.MODE_PRIVATE);
+        return this;
+    }
+
+    public void getRequest(String path, CommonInterFace interFace) {
+
+        String url = Api.APP_DOMAIN + PATH;
+        //正式环境
+        File file = new File(path);
+        MultipartBody.Builder builder = new MultipartBody.Builder()
+                .setType(MultipartBody.FORM);
+        String zh = "";
+        if (sp != null) {
+            zh = sp.getString("zh", "");
+        }
+
+        builder.addFormDataPart("file", zh+ UUIDUtils.uuid()+file.getName(), RequestBody.create(MediaType.parse("image/*"), file));
+        MultipartBody multipartBody = builder.build();
+        ArmsUtils.obtainAppComponentFromContext(context).repositoryManager()
+                .obtainRetrofitService(ApiService.class).upload(url, multipartBody)
+                .subscribeOn(Schedulers.io())
+                .doOnSubscribe(disposable -> {
+                    addDispose(disposable);//在订阅时必须调用这个方法,不然Activity退出时可能内存泄漏
+                })
+                .subscribeOn(AndroidSchedulers.mainThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new ErrorHandleSubscriber<JsonObject>(ArmsUtils.obtainAppComponentFromContext(context).rxErrorHandler()) {
+                    @Override
+                    public void onNext(JsonObject jsonObject) {
+                        String json = jsonObject.toString();
+
+                        interFace.onSuccess(json);
+
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        interFace.onError(t);
+
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        super.onComplete();
+                        interFace.onFinsh();
+
+                    }
+                });
+
+    }
+
+    public void getGDMapInfo(Location location, CommonInterFace interFace) {
+
+        String url = "https://restapi.amap.com/v3/geocode/regeo";
+        Map<String, String> map = new HashMap<>();
+        map.put("key", "1df7af28cd9fdf47219ef5942c8329ed");
+        map.put("poitype", "");
+        map.put("radius", "200");
+        map.put("roadlevel", "0");
+        map.put("extensions", "all");
+        map.put("location", location.getLongitude() + "," + location.getLatitude());
+        // map.put("location","129.787391,43.084104");
+        ArmsUtils.obtainAppComponentFromContext(context).repositoryManager()
+                .obtainRetrofitService(ApiService.class).getMap(url, map)
+                .subscribeOn(Schedulers.io())
+                .doOnSubscribe(disposable -> {
+                    addDispose(disposable);//在订阅时必须调用这个方法,不然Activity退出时可能内存泄漏
+                })
+                .subscribeOn(AndroidSchedulers.mainThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new ErrorHandleSubscriber<JsonObject>(ArmsUtils.obtainAppComponentFromContext(context).rxErrorHandler()) {
+                    @Override
+                    public void onNext(JsonObject jsonObject) {
+                        String json = jsonObject.toString();
+
+                        interFace.onSuccess(json);
+
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        interFace.onError(t);
+
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        super.onComplete();
+                        interFace.onFinsh();
+
+                    }
+                });
+
+    }
+
+    public void getGDMapInfo1(String location, CommonInterFace interFace) {
+
+        String url = "https://restapi.amap.com/v3/geocode/regeo";
+        Map<String, String> map = new HashMap<>();
+        map.put("key", "1df7af28cd9fdf47219ef5942c8329ed");
+        map.put("poitype", "");
+        map.put("radius", "200");
+        map.put("roadlevel", "0");
+        map.put("extensions", "all");
+        map.put("location", location);
+        // map.put("location","125.432857,44.348951");
+        ArmsUtils.obtainAppComponentFromContext(context).repositoryManager()
+                .obtainRetrofitService(ApiService.class).getMap(url, map)
+                .subscribeOn(Schedulers.io())
+                .doOnSubscribe(disposable -> {
+                    addDispose(disposable);//在订阅时必须调用这个方法,不然Activity退出时可能内存泄漏
+                })
+                .subscribeOn(AndroidSchedulers.mainThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new ErrorHandleSubscriber<JsonObject>(ArmsUtils.obtainAppComponentFromContext(context).rxErrorHandler()) {
+                    @Override
+                    public void onNext(JsonObject jsonObject) {
+                        String json = jsonObject.toString();
+
+                        interFace.onSuccess(json);
+
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        interFace.onError(t);
+
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        super.onComplete();
+                        interFace.onFinsh();
+
+                    }
+                });
+
+    }
+
+    private CompositeDisposable mCompositeDisposable;
+
+    public void addDispose(Disposable disposable) {
+        if (mCompositeDisposable == null) {
+            mCompositeDisposable = new CompositeDisposable();
+        }
+        mCompositeDisposable.add(disposable);//将所有 Disposable 放入集中处理
+    }
+
+
+    public void unDispose() {
+
+        if (mCompositeDisposable != null) {
+            mCompositeDisposable.clear();//保证 Activity 结束时取消所有正在执行的订阅
+        }
+    }
+
+    public static String getRequstJson(String reqValue, String dataObjId) {
+        String method = "query";
+        BusEntity entity = new BusEntity();
+        entity.setId(UUID.randomUUID().toString());
+        entity.setJsonrpc("2.0");
+        BusEntity.ParamsBean params = new BusEntity.ParamsBean();
+        BusEntity.ParamsBean.DataBean data = new BusEntity.ParamsBean.DataBean();
+        data.setVersion("20190221");
+        if (method.equals("connect")) {
+            entity.setMethod("connect");
+            data.setAppId("申请后填写");
+            SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+            data.setTimestamp(format.format(new Date()));
+            data.setNonce("vMksKOwd");
+            data.setSign("");
+        } else {
+            entity.setMethod("query");
+            data.setSessionId("会话id");
+            BusEntity.ParamsBean.DataBean.UserInfoBean userInfo = new BusEntity.ParamsBean.DataBean.UserInfoBean();
+            userInfo.setUserId("000000");
+            userInfo.setUserName("张三");
+            userInfo.setSn("39a22c9d353f4ea8bbf5a8703799f400");
+            userInfo.setUserDeptNo("220000000000");
+            data.setUserInfo(userInfo);
+            data.setDataObjId(dataObjId);
+            data.setFields(reqValue);
+            data.setCondition("");
+            data.setOrderBy("");
+            BusEntity.ParamsBean.DataBean.PageBean page = new BusEntity.ParamsBean.DataBean.PageBean();
+            page.setPageNo(1);
+            page.setPageSize(10);
+            data.setPage(page);
+        }
+
+        params.setData(data);
+        params.setSign("");
+        entity.setParams(params);
+        String json = new GsonBuilder().disableHtmlEscaping().create().toJson(entity).toString();
+        return json;
+    }
+
+}

+ 41 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/di/component/MainComponent.java

@@ -0,0 +1,41 @@
+package com.xwkj.rwxffk.di.component;
+
+import dagger.BindsInstance;
+import dagger.Component;
+
+import com.jess.arms.di.component.AppComponent;
+
+import com.xwkj.rwxffk.di.module.MainModule;
+import com.xwkj.rwxffk.mvp.contract.MainContract;
+
+import com.jess.arms.di.scope.ActivityScope;
+import com.xwkj.rwxffk.mvp.ui.activity.MainActivity;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+@Component(modules = MainModule.class, dependencies = AppComponent.class)
+public interface MainComponent {
+    void inject(MainActivity activity);
+
+    @Component.Builder
+    interface Builder {
+        @BindsInstance
+        MainComponent.Builder view(MainContract.View view);
+
+        MainComponent.Builder appComponent(AppComponent appComponent);
+
+        MainComponent build();
+    }
+}

+ 41 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/di/component/WqsRwComponent.java

@@ -0,0 +1,41 @@
+package com.xwkj.rwxffk.di.component;
+
+import dagger.BindsInstance;
+import dagger.Component;
+
+import com.jess.arms.di.component.AppComponent;
+
+import com.xwkj.rwxffk.di.module.WqsRwModule;
+import com.xwkj.rwxffk.mvp.contract.WqsRwContract;
+
+import com.jess.arms.di.scope.FragmentScope;
+import com.xwkj.rwxffk.mvp.ui.fragment.WqsRwFragment;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@FragmentScope
+@Component(modules = WqsRwModule.class, dependencies = AppComponent.class)
+public interface WqsRwComponent {
+    void inject(WqsRwFragment fragment);
+
+    @Component.Builder
+    interface Builder {
+        @BindsInstance
+        WqsRwComponent.Builder view(WqsRwContract.View view);
+
+        WqsRwComponent.Builder appComponent(AppComponent appComponent);
+
+        WqsRwComponent build();
+    }
+}

+ 41 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/di/component/YqsRwComponent.java

@@ -0,0 +1,41 @@
+package com.xwkj.rwxffk.di.component;
+
+import dagger.BindsInstance;
+import dagger.Component;
+
+import com.jess.arms.di.component.AppComponent;
+
+import com.xwkj.rwxffk.di.module.YqsRwModule;
+import com.xwkj.rwxffk.mvp.contract.YqsRwContract;
+
+import com.jess.arms.di.scope.FragmentScope;
+import com.xwkj.rwxffk.mvp.ui.fragment.YqsRwFragment;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@FragmentScope
+@Component(modules = YqsRwModule.class, dependencies = AppComponent.class)
+public interface YqsRwComponent {
+    void inject(YqsRwFragment fragment);
+
+    @Component.Builder
+    interface Builder {
+        @BindsInstance
+        YqsRwComponent.Builder view(YqsRwContract.View view);
+
+        YqsRwComponent.Builder appComponent(AppComponent appComponent);
+
+        YqsRwComponent build();
+    }
+}

+ 30 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/di/module/MainModule.java

@@ -0,0 +1,30 @@
+package com.xwkj.rwxffk.di.module;
+
+import com.jess.arms.di.scope.ActivityScope;
+
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+
+import com.xwkj.rwxffk.mvp.contract.MainContract;
+import com.xwkj.rwxffk.mvp.model.MainModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@Module
+public abstract class MainModule {
+
+    @Binds
+    abstract MainContract.Model bindMainModel(MainModel model);
+}

+ 30 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/di/module/WqsRwModule.java

@@ -0,0 +1,30 @@
+package com.xwkj.rwxffk.di.module;
+
+import com.jess.arms.di.scope.FragmentScope;
+
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+
+import com.xwkj.rwxffk.mvp.contract.WqsRwContract;
+import com.xwkj.rwxffk.mvp.model.WqsRwModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@Module
+public abstract class WqsRwModule {
+
+    @Binds
+    abstract WqsRwContract.Model bindWqsRwModel(WqsRwModel model);
+}

+ 30 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/di/module/YqsRwModule.java

@@ -0,0 +1,30 @@
+package com.xwkj.rwxffk.di.module;
+
+import com.jess.arms.di.scope.FragmentScope;
+
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+
+import com.xwkj.rwxffk.mvp.contract.YqsRwContract;
+import com.xwkj.rwxffk.mvp.model.YqsRwModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@Module
+public abstract class YqsRwModule {
+
+    @Binds
+    abstract YqsRwContract.Model bindYqsRwModel(YqsRwModel model);
+}

+ 31 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/contract/MainContract.java

@@ -0,0 +1,31 @@
+package com.xwkj.rwxffk.mvp.contract;
+
+import com.jess.arms.mvp.IView;
+import com.jess.arms.mvp.IModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public interface MainContract {
+    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
+    interface View extends IView {
+
+        void onSuccess(String result);
+        void onError(Throwable mThrowable);
+    }
+
+    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
+    interface Model extends IModel {
+
+    }
+}

+ 31 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/contract/WqsRwContract.java

@@ -0,0 +1,31 @@
+package com.xwkj.rwxffk.mvp.contract;
+
+import com.jess.arms.mvp.IView;
+import com.jess.arms.mvp.IModel;
+import com.xwkj.rwxffk.mvp.model.entity.RwEntity;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public interface WqsRwContract {
+    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
+    interface View extends IView {
+
+        void onSuccess(String result, int flag, RwEntity.DataBean.RecordsBean bean);
+    }
+
+    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
+    interface Model extends IModel {
+
+    }
+}

+ 30 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/contract/YqsRwContract.java

@@ -0,0 +1,30 @@
+package com.xwkj.rwxffk.mvp.contract;
+
+import com.jess.arms.mvp.IView;
+import com.jess.arms.mvp.IModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public interface YqsRwContract {
+    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
+    interface View extends IView {
+
+        void onSuccess(String result);
+    }
+
+    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
+    interface Model extends IModel {
+
+    }
+}

+ 46 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/MainModel.java

@@ -0,0 +1,46 @@
+package com.xwkj.rwxffk.mvp.model;
+
+import android.app.Application;
+
+import com.google.gson.Gson;
+import com.jess.arms.integration.IRepositoryManager;
+import com.jess.arms.mvp.BaseModel;
+
+import com.jess.arms.di.scope.ActivityScope;
+
+import javax.inject.Inject;
+
+import com.xwkj.rwxffk.mvp.contract.MainContract;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+public class MainModel extends BaseModel implements MainContract.Model {
+    @Inject
+    Gson mGson;
+    @Inject
+    Application mApplication;
+
+    @Inject
+    public MainModel(IRepositoryManager repositoryManager) {
+        super(repositoryManager);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mGson = null;
+        this.mApplication = null;
+    }
+}

+ 46 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/WqsRwModel.java

@@ -0,0 +1,46 @@
+package com.xwkj.rwxffk.mvp.model;
+
+import android.app.Application;
+
+import com.google.gson.Gson;
+import com.jess.arms.integration.IRepositoryManager;
+import com.jess.arms.mvp.BaseModel;
+
+import com.jess.arms.di.scope.FragmentScope;
+
+import javax.inject.Inject;
+
+import com.xwkj.rwxffk.mvp.contract.WqsRwContract;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@FragmentScope
+public class WqsRwModel extends BaseModel implements WqsRwContract.Model {
+    @Inject
+    Gson mGson;
+    @Inject
+    Application mApplication;
+
+    @Inject
+    public WqsRwModel(IRepositoryManager repositoryManager) {
+        super(repositoryManager);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mGson = null;
+        this.mApplication = null;
+    }
+}

+ 46 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/YqsRwModel.java

@@ -0,0 +1,46 @@
+package com.xwkj.rwxffk.mvp.model;
+
+import android.app.Application;
+
+import com.google.gson.Gson;
+import com.jess.arms.integration.IRepositoryManager;
+import com.jess.arms.mvp.BaseModel;
+
+import com.jess.arms.di.scope.FragmentScope;
+
+import javax.inject.Inject;
+
+import com.xwkj.rwxffk.mvp.contract.YqsRwContract;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@FragmentScope
+public class YqsRwModel extends BaseModel implements YqsRwContract.Model {
+    @Inject
+    Gson mGson;
+    @Inject
+    Application mApplication;
+
+    @Inject
+    public YqsRwModel(IRepositoryManager repositoryManager) {
+        super(repositoryManager);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mGson = null;
+        this.mApplication = null;
+    }
+}

+ 15 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/api/Api.java

@@ -0,0 +1,15 @@
+package com.xwkj.rwxffk.mvp.model.api;
+
+/**
+ * ================================================
+ * 存放一些与 API 有关的东西,如请求地址,请求码等
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * ================================================
+ */
+public interface Api {
+    String url = "http://192.168.50.93:6543/common/zf3";
+    String APP_DOMAIN = "http://192.168.50.93:6543";
+}

+ 26 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/api/service/ApiService.java

@@ -0,0 +1,26 @@
+package com.xwkj.rwxffk.mvp.model.api.service;
+
+import com.google.gson.JsonObject;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+import retrofit2.http.QueryMap;
+import retrofit2.http.Url;
+
+public interface ApiService {
+    @POST
+    Observable<JsonObject> upload(@Url String url, @Body MultipartBody multipartBody);
+
+    @GET
+    Observable<JsonObject> getMap(@Url String url, @QueryMap Map<String, String> map);
+    @Headers({"Content-Type: application/json", "Accept: application/json"})//需要添加头
+    @POST
+    Observable<JsonObject> CommonReq(@Url String url, @Body RequestBody map);
+}

+ 1080 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/entity/MdjfXqEntity.java

@@ -0,0 +1,1080 @@
+package com.xwkj.rwxffk.mvp.model.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class MdjfXqEntity implements Serializable {
+
+    /**
+     * code : 200
+     * success : true
+     * data : {"id":-1,"createUser":-1,"createDept":-1,"createTime":"","updateUser":-1,"updateTime":"","status":-1,"isDeleted":-1,"jfmc":"","jflx":"","jfyy":"","jffssj":"","jffsdd":"","jyaq":"","jfdjsj":"","jfsssq":-1,"jfsspcs":-1,"jfssfj":-1,"sbzt":"","sbsj":"","sbdw":-1,"yjzt":"","yjsj":"","yjdw":-1,"fksj":"","fknr":"","fkr":"","fkdw":-1,"djr":-1,"mdjb":"","zp":"","sqName":"","pcsName":"","createName":"","mdjfDj":{"id":"1686648898834546690","createUser":"1123598821738675201","createDept":"1677212139158364161","createTime":"2023-08-02 16:03:28","updateUser":"1123598821738675201","updateTime":"2023-08-02 16:03:28","status":1,"isDeleted":0,"jfmc":"纠纷名称","jflx":"纠纷类型","jfyy":"纠纷原因","jffssj":"2023-08-01 08:09:10","jffsdd":"纠纷发生地点","jyaq":"简要案情","jfdjsj":"","jfsssq":-1,"jfsspcs":-1,"jfssfj":-1,"sbzt":"","sbsj":"","sbdw":-1,"yjzt":"","yjsj":"","yjdw":-1,"fksj":"","fknr":"","fkr":"","fkdw":-1,"djr":-1,"mdjb":"","zp":"","sqName":"","pcsName":"","createName":""},"mdjfRyList":[{"id":"1686648898901655553","createUser":"1123598821738675201","createDept":"1677212139158364161","createTime":"2023-08-02 16:03:28","updateUser":"1123598821738675201","updateTime":"2023-08-02 16:03:28","status":1,"isDeleted":0,"jfId":"1686648898834546690","xm":"姓名1","xb":"性别1","sfzh":"身份证号1","lxdh":"联系电话1","lb":"类别1"},{"id":"1686648898901655554","createUser":"1123598821738675201","createDept":"1677212139158364161","createTime":"2023-08-02 16:03:28","updateUser":"1123598821738675201","updateTime":"2023-08-02 16:03:28","status":1,"isDeleted":0,"jfId":"1686648898834546690","xm":"姓名2","xb":"性别2","sfzh":"身份证号2","lxdh":"联系电话2","lb":"类别2"}],"mdjfTjList":[]}
+     * msg : 操作成功
+     */
+
+    private int code;
+    private boolean success;
+    private DataBean data;
+    private String msg;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public DataBean getData() {
+        return data;
+    }
+
+    public void setData(DataBean data) {
+        this.data = data;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static class DataBean implements Serializable {
+        /**
+         * id : -1
+         * createUser : -1
+         * createDept : -1
+         * createTime :
+         * updateUser : -1
+         * updateTime :
+         * status : -1
+         * isDeleted : -1
+         * jfmc :
+         * jflx :
+         * jfyy :
+         * jffssj :
+         * jffsdd :
+         * jyaq :
+         * jfdjsj :
+         * jfsssq : -1
+         * jfsspcs : -1
+         * jfssfj : -1
+         * sbzt :
+         * sbsj :
+         * sbdw : -1
+         * yjzt :
+         * yjsj :
+         * yjdw : -1
+         * fksj :
+         * fknr :
+         * fkr :
+         * fkdw : -1
+         * djr : -1
+         * mdjb :
+         * zp :
+         * sqName :
+         * pcsName :
+         * createName :
+         * mdjfDj : {"id":"1686648898834546690","createUser":"1123598821738675201","createDept":"1677212139158364161","createTime":"2023-08-02 16:03:28","updateUser":"1123598821738675201","updateTime":"2023-08-02 16:03:28","status":1,"isDeleted":0,"jfmc":"纠纷名称","jflx":"纠纷类型","jfyy":"纠纷原因","jffssj":"2023-08-01 08:09:10","jffsdd":"纠纷发生地点","jyaq":"简要案情","jfdjsj":"","jfsssq":-1,"jfsspcs":-1,"jfssfj":-1,"sbzt":"","sbsj":"","sbdw":-1,"yjzt":"","yjsj":"","yjdw":-1,"fksj":"","fknr":"","fkr":"","fkdw":-1,"djr":-1,"mdjb":"","zp":"","sqName":"","pcsName":"","createName":""}
+         * mdjfRyList : [{"id":"1686648898901655553","createUser":"1123598821738675201","createDept":"1677212139158364161","createTime":"2023-08-02 16:03:28","updateUser":"1123598821738675201","updateTime":"2023-08-02 16:03:28","status":1,"isDeleted":0,"jfId":"1686648898834546690","xm":"姓名1","xb":"性别1","sfzh":"身份证号1","lxdh":"联系电话1","lb":"类别1"},{"id":"1686648898901655554","createUser":"1123598821738675201","createDept":"1677212139158364161","createTime":"2023-08-02 16:03:28","updateUser":"1123598821738675201","updateTime":"2023-08-02 16:03:28","status":1,"isDeleted":0,"jfId":"1686648898834546690","xm":"姓名2","xb":"性别2","sfzh":"身份证号2","lxdh":"联系电话2","lb":"类别2"}]
+         * mdjfTjList : []
+         */
+
+        private String id;
+        private String createUser;
+        private String createDept;
+        private String createTime;
+        private String updateUser;
+        private String updateTime;
+        private int status;
+        private int isDeleted;
+        private String jfmc;
+        private String jflx;
+        private String jfyy;
+        private String jffssj;
+        private String jffsdd;
+        private String jyaq;
+        private String jfdjsj;
+        private String jfsssq;
+        private String jfsspcs;
+        private String jfssfj;
+        private String sbzt;
+        private String sbsj;
+        private String sbdw;
+        private String yjzt;
+        private String yjsj;
+        private String yjdw;
+        private String fksj;
+        private String fknr;
+        private String fkr;
+        private String fkdw;
+        private String djr;
+        private String mdjb;
+        private String zp;
+
+        private String sqName;
+        private String pcsName;
+        private String createName;
+        private MdjfDjBean mdjfDj;
+        private List<MdjfRyListBean> mdjfRyList;
+        private List<?> mdjfTjList;
+
+        public String getId() {
+            return id;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+
+        public String getCreateUser() {
+            return createUser;
+        }
+
+        public void setCreateUser(String createUser) {
+            this.createUser = createUser;
+        }
+
+        public String getCreateDept() {
+            return createDept;
+        }
+
+        public void setCreateDept(String createDept) {
+            this.createDept = createDept;
+        }
+
+        public String getCreateTime() {
+            return createTime;
+        }
+
+        public void setCreateTime(String createTime) {
+            this.createTime = createTime;
+        }
+
+        public String getUpdateUser() {
+            return updateUser;
+        }
+
+        public void setUpdateUser(String updateUser) {
+            this.updateUser = updateUser;
+        }
+
+        public String getUpdateTime() {
+            return updateTime;
+        }
+
+        public void setUpdateTime(String updateTime) {
+            this.updateTime = updateTime;
+        }
+
+        public int getStatus() {
+            return status;
+        }
+
+        public void setStatus(int status) {
+            this.status = status;
+        }
+
+        public int getIsDeleted() {
+            return isDeleted;
+        }
+
+        public void setIsDeleted(int isDeleted) {
+            this.isDeleted = isDeleted;
+        }
+
+        public String getJfmc() {
+            return jfmc;
+        }
+
+        public void setJfmc(String jfmc) {
+            this.jfmc = jfmc;
+        }
+
+        public String getJflx() {
+            return jflx;
+        }
+
+        public void setJflx(String jflx) {
+            this.jflx = jflx;
+        }
+
+        public String getJfyy() {
+            return jfyy;
+        }
+
+        public void setJfyy(String jfyy) {
+            this.jfyy = jfyy;
+        }
+
+        public String getJffssj() {
+            return jffssj;
+        }
+
+        public void setJffssj(String jffssj) {
+            this.jffssj = jffssj;
+        }
+
+        public String getJffsdd() {
+            return jffsdd;
+        }
+
+        public void setJffsdd(String jffsdd) {
+            this.jffsdd = jffsdd;
+        }
+
+        public String getJyaq() {
+            return jyaq;
+        }
+
+        public void setJyaq(String jyaq) {
+            this.jyaq = jyaq;
+        }
+
+        public String getJfdjsj() {
+            return jfdjsj;
+        }
+
+        public void setJfdjsj(String jfdjsj) {
+            this.jfdjsj = jfdjsj;
+        }
+
+        public String getJfsssq() {
+            return jfsssq;
+        }
+
+        public void setJfsssq(String jfsssq) {
+            this.jfsssq = jfsssq;
+        }
+
+        public String getJfsspcs() {
+            return jfsspcs;
+        }
+
+        public void setJfsspcs(String jfsspcs) {
+            this.jfsspcs = jfsspcs;
+        }
+
+        public String getJfssfj() {
+            return jfssfj;
+        }
+
+        public void setJfssfj(String jfssfj) {
+            this.jfssfj = jfssfj;
+        }
+
+        public String getSbzt() {
+            return sbzt;
+        }
+
+        public void setSbzt(String sbzt) {
+            this.sbzt = sbzt;
+        }
+
+        public String getSbsj() {
+            return sbsj;
+        }
+
+        public void setSbsj(String sbsj) {
+            this.sbsj = sbsj;
+        }
+
+        public String getSbdw() {
+            return sbdw;
+        }
+
+        public void setSbdw(String sbdw) {
+            this.sbdw = sbdw;
+        }
+
+        public String getYjzt() {
+            return yjzt;
+        }
+
+        public void setYjzt(String yjzt) {
+            this.yjzt = yjzt;
+        }
+
+        public String getYjsj() {
+            return yjsj;
+        }
+
+        public void setYjsj(String yjsj) {
+            this.yjsj = yjsj;
+        }
+
+        public String getYjdw() {
+            return yjdw;
+        }
+
+        public void setYjdw(String yjdw) {
+            this.yjdw = yjdw;
+        }
+
+        public String getFksj() {
+            return fksj;
+        }
+
+        public void setFksj(String fksj) {
+            this.fksj = fksj;
+        }
+
+        public String getFknr() {
+            return fknr;
+        }
+
+        public void setFknr(String fknr) {
+            this.fknr = fknr;
+        }
+
+        public String getFkr() {
+            return fkr;
+        }
+
+        public void setFkr(String fkr) {
+            this.fkr = fkr;
+        }
+
+        public String getFkdw() {
+            return fkdw;
+        }
+
+        public void setFkdw(String fkdw) {
+            this.fkdw = fkdw;
+        }
+
+        public String getDjr() {
+            return djr;
+        }
+
+        public void setDjr(String djr) {
+            this.djr = djr;
+        }
+
+        public String getMdjb() {
+            return mdjb;
+        }
+
+        public void setMdjb(String mdjb) {
+            this.mdjb = mdjb;
+        }
+
+        public String getZp() {
+            return zp;
+        }
+
+        public void setZp(String zp) {
+            this.zp = zp;
+        }
+
+        public String getSqName() {
+            return sqName;
+        }
+
+        public void setSqName(String sqName) {
+            this.sqName = sqName;
+        }
+
+        public String getPcsName() {
+            return pcsName;
+        }
+
+        public void setPcsName(String pcsName) {
+            this.pcsName = pcsName;
+        }
+
+        public String getCreateName() {
+            return createName;
+        }
+
+        public void setCreateName(String createName) {
+            this.createName = createName;
+        }
+
+        public MdjfDjBean getMdjfDj() {
+            return mdjfDj;
+        }
+
+        public void setMdjfDj(MdjfDjBean mdjfDj) {
+            this.mdjfDj = mdjfDj;
+        }
+
+        public List<MdjfRyListBean> getMdjfRyList() {
+            return mdjfRyList;
+        }
+
+        public void setMdjfRyList(List<MdjfRyListBean> mdjfRyList) {
+            this.mdjfRyList = mdjfRyList;
+        }
+
+        public List<?> getMdjfTjList() {
+            return mdjfTjList;
+        }
+
+        public void setMdjfTjList(List<?> mdjfTjList) {
+            this.mdjfTjList = mdjfTjList;
+        }
+
+        public static class MdjfDjBean implements Serializable {
+            /**
+             * id : 1686648898834546690
+             * createUser : 1123598821738675201
+             * createDept : 1677212139158364161
+             * createTime : 2023-08-02 16:03:28
+             * updateUser : 1123598821738675201
+             * updateTime : 2023-08-02 16:03:28
+             * status : 1
+             * isDeleted : 0
+             * jfmc : 纠纷名称
+             * jflx : 纠纷类型
+             * jfyy : 纠纷原因
+             * jffssj : 2023-08-01 08:09:10
+             * jffsdd : 纠纷发生地点
+             * jyaq : 简要案情
+             * jfdjsj :
+             * jfsssq : -1
+             * jfsspcs : -1
+             * jfssfj : -1
+             * sbzt :
+             * sbsj :
+             * sbdw : -1
+             * yjzt :
+             * yjsj :
+             * yjdw : -1
+             * fksj :
+             * fknr :
+             * fkr :
+             * fkdw : -1
+             * djr : -1
+             * mdjb :
+             * zp :
+             * sqName :
+             * pcsName :
+             * createName :
+             */
+            private String sfsc;
+            private String sfmy;
+            private String sfjj;
+            private String wtjy;
+            private String thjl;
+            private String zzdw;
+
+            public String getZzdw() {
+                return zzdw;
+            }
+
+            public void setZzdw(String zzdw) {
+                this.zzdw = zzdw;
+            }
+
+            public String getSfsc() {
+                return sfsc;
+            }
+
+            public void setSfsc(String sfsc) {
+                this.sfsc = sfsc;
+            }
+
+            public String getSfmy() {
+                return sfmy;
+            }
+
+            public void setSfmy(String sfmy) {
+                this.sfmy = sfmy;
+            }
+
+            public String getSfjj() {
+                return sfjj;
+            }
+
+            public void setSfjj(String sfjj) {
+                this.sfjj = sfjj;
+            }
+
+            public String getWtjy() {
+                return wtjy;
+            }
+
+            public void setWtjy(String wtjy) {
+                this.wtjy = wtjy;
+            }
+
+            public String getThjl() {
+                return thjl;
+            }
+
+            public void setThjl(String thjl) {
+                this.thjl = thjl;
+            }
+
+            private String id;
+            private String createUser;
+            private String createDept;
+            private String createTime;
+            private String updateUser;
+            private String updateTime;
+            private int status;
+            private int isDeleted;
+            private String jfmc;
+            private String jflx;
+            private String jfyy;
+            private String jffssj;
+            private String jffsdd;
+            private String jyaq;
+            private String bz;
+            private String mdjbVVlaue;
+
+            public String getBz() {
+                return bz;
+            }
+
+            public void setBz(String bz) {
+                this.bz = bz;
+            }
+
+            private String jfdjsj;
+            private String jfsssq;
+            private String jfsspcs;
+            private String jfssfj;
+            private String sbzt;
+            private String sbsj;
+            private String sbdw;
+            private String yjzt;
+            private String yjsj;
+            private String yjdw;
+            private String fksj;
+            private String fknr;
+            private String fkr;
+            private String fkdw;
+            private String djr;
+            private String mdjb;
+            private String jfly;
+            private String bjrdh;
+            private String zp;
+            private String sqName;
+            private String hfnr;
+            private String hfsj;
+            private String hfr;
+
+            public String getBjrdh() {
+                return bjrdh;
+            }
+
+            public void setBjrdh(String bjrdh) {
+                this.bjrdh = bjrdh;
+            }
+
+            public String getHfsj() {
+                return hfsj;
+            }
+
+            public void setHfsj(String hfsj) {
+                this.hfsj = hfsj;
+            }
+
+            public String getHfr() {
+                return hfr;
+            }
+
+            public void setHfr(String hfr) {
+                this.hfr = hfr;
+            }
+
+            public String getHfnr() {
+                return hfnr;
+            }
+
+            public void setHfnr(String hfnr) {
+                this.hfnr = hfnr;
+            }
+
+            public String getMdjbVVlaue() {
+                return mdjbVVlaue;
+            }
+
+            public void setMdjbVVlaue(String mdjbVVlaue) {
+                this.mdjbVVlaue = mdjbVVlaue;
+            }
+
+            public String getJfly() {
+                return jfly;
+            }
+
+            public void setJfly(String jfly) {
+                this.jfly = jfly;
+            }
+
+            private String pcsName;
+            private String createName;
+
+            public String getId() {
+                return id;
+            }
+
+            public void setId(String id) {
+                this.id = id;
+            }
+
+            public String getCreateUser() {
+                return createUser;
+            }
+
+            public void setCreateUser(String createUser) {
+                this.createUser = createUser;
+            }
+
+            public String getCreateDept() {
+                return createDept;
+            }
+
+            public void setCreateDept(String createDept) {
+                this.createDept = createDept;
+            }
+
+            public String getCreateTime() {
+                return createTime;
+            }
+
+            public void setCreateTime(String createTime) {
+                this.createTime = createTime;
+            }
+
+            public String getUpdateUser() {
+                return updateUser;
+            }
+
+            public void setUpdateUser(String updateUser) {
+                this.updateUser = updateUser;
+            }
+
+            public String getUpdateTime() {
+                return updateTime;
+            }
+
+            public void setUpdateTime(String updateTime) {
+                this.updateTime = updateTime;
+            }
+
+            public int getStatus() {
+                return status;
+            }
+
+            public void setStatus(int status) {
+                this.status = status;
+            }
+
+            public int getIsDeleted() {
+                return isDeleted;
+            }
+
+            public void setIsDeleted(int isDeleted) {
+                this.isDeleted = isDeleted;
+            }
+
+            public String getJfmc() {
+                return jfmc;
+            }
+
+            public void setJfmc(String jfmc) {
+                this.jfmc = jfmc;
+            }
+
+            public String getJflx() {
+                return jflx;
+            }
+
+            public void setJflx(String jflx) {
+                this.jflx = jflx;
+            }
+
+            public String getJfyy() {
+                return jfyy;
+            }
+
+            public void setJfyy(String jfyy) {
+                this.jfyy = jfyy;
+            }
+
+            public String getJffssj() {
+                return jffssj;
+            }
+
+            public void setJffssj(String jffssj) {
+                this.jffssj = jffssj;
+            }
+
+            public String getJffsdd() {
+                return jffsdd;
+            }
+
+            public void setJffsdd(String jffsdd) {
+                this.jffsdd = jffsdd;
+            }
+
+            public String getJyaq() {
+                return jyaq;
+            }
+
+            public void setJyaq(String jyaq) {
+                this.jyaq = jyaq;
+            }
+
+            public String getJfdjsj() {
+                return jfdjsj;
+            }
+
+            public void setJfdjsj(String jfdjsj) {
+                this.jfdjsj = jfdjsj;
+            }
+
+
+            public String getSbzt() {
+                return sbzt;
+            }
+
+            public void setSbzt(String sbzt) {
+                this.sbzt = sbzt;
+            }
+
+            public String getSbsj() {
+                return sbsj;
+            }
+
+            public void setSbsj(String sbsj) {
+                this.sbsj = sbsj;
+            }
+
+
+            public String getYjzt() {
+                return yjzt;
+            }
+
+            public void setYjzt(String yjzt) {
+                this.yjzt = yjzt;
+            }
+
+            public String getYjsj() {
+                return yjsj;
+            }
+
+            public void setYjsj(String yjsj) {
+                this.yjsj = yjsj;
+            }
+
+
+            public String getFksj() {
+                return fksj;
+            }
+
+            public void setFksj(String fksj) {
+                this.fksj = fksj;
+            }
+
+            public String getFknr() {
+                return fknr;
+            }
+
+            public void setFknr(String fknr) {
+                this.fknr = fknr;
+            }
+
+            public String getFkr() {
+                return fkr;
+            }
+
+            public void setFkr(String fkr) {
+                this.fkr = fkr;
+            }
+
+            public String getJfsssq() {
+                return jfsssq;
+            }
+
+            public void setJfsssq(String jfsssq) {
+                this.jfsssq = jfsssq;
+            }
+
+            public String getJfsspcs() {
+                return jfsspcs;
+            }
+
+            public void setJfsspcs(String jfsspcs) {
+                this.jfsspcs = jfsspcs;
+            }
+
+            public String getJfssfj() {
+                return jfssfj;
+            }
+
+            public void setJfssfj(String jfssfj) {
+                this.jfssfj = jfssfj;
+            }
+
+            public String getSbdw() {
+                return sbdw;
+            }
+
+            public void setSbdw(String sbdw) {
+                this.sbdw = sbdw;
+            }
+
+            public String getYjdw() {
+                return yjdw;
+            }
+
+            public void setYjdw(String yjdw) {
+                this.yjdw = yjdw;
+            }
+
+            public String getFkdw() {
+                return fkdw;
+            }
+
+            public void setFkdw(String fkdw) {
+                this.fkdw = fkdw;
+            }
+
+            public String getDjr() {
+                return djr;
+            }
+
+            public void setDjr(String djr) {
+                this.djr = djr;
+            }
+
+            public String getMdjb() {
+                return mdjb;
+            }
+
+            public void setMdjb(String mdjb) {
+                this.mdjb = mdjb;
+            }
+
+            public String getZp() {
+                return zp;
+            }
+
+            public void setZp(String zp) {
+                this.zp = zp;
+            }
+
+            public String getSqName() {
+                return sqName;
+            }
+
+            public void setSqName(String sqName) {
+                this.sqName = sqName;
+            }
+
+            public String getPcsName() {
+                return pcsName;
+            }
+
+            public void setPcsName(String pcsName) {
+                this.pcsName = pcsName;
+            }
+
+            public String getCreateName() {
+                return createName;
+            }
+
+            public void setCreateName(String createName) {
+                this.createName = createName;
+            }
+        }
+
+        public static class MdjfRyListBean implements Serializable {
+            /**
+             * id : 1686648898901655553
+             * createUser : 1123598821738675201
+             * createDept : 1677212139158364161
+             * createTime : 2023-08-02 16:03:28
+             * updateUser : 1123598821738675201
+             * updateTime : 2023-08-02 16:03:28
+             * status : 1
+             * isDeleted : 0
+             * jfId : 1686648898834546690
+             * xm : 姓名1
+             * xb : 性别1
+             * sfzh : 身份证号1
+             * lxdh : 联系电话1
+             * lb : 类别1
+             */
+
+            private String id;
+            private String createUser;
+            private String createDept;
+            private String createTime;
+            private String updateUser;
+            private String updateTime;
+            private int status;
+            private int isDeleted;
+            private String jfId;
+            private String xm;
+            private String xb;
+            private String sfzh;
+            private String lxdh;
+            private String lb;
+            private String qmzp;
+            private String hfzp;
+
+            public String getQmzp() {
+                return qmzp;
+            }
+
+            public void setQmzp(String qmzp) {
+                this.qmzp = qmzp;
+            }
+
+            public String getHfzp() {
+                return hfzp;
+            }
+
+            public void setHfzp(String hfzp) {
+                this.hfzp = hfzp;
+            }
+
+            private boolean isChecked; // 是否选中CheckBox
+
+            public boolean isChecked() {
+                return isChecked;
+            }
+
+            public void setChecked(boolean checked) {
+                isChecked = checked;
+            }
+
+            public String getRyzp() {
+                return ryzp;
+            }
+
+            public void setRyzp(String ryzp) {
+                this.ryzp = ryzp;
+            }
+
+            private String ryzp;
+
+            public String getId() {
+                return id;
+            }
+
+            public void setId(String id) {
+                this.id = id;
+            }
+
+            public String getCreateUser() {
+                return createUser;
+            }
+
+            public void setCreateUser(String createUser) {
+                this.createUser = createUser;
+            }
+
+            public String getCreateDept() {
+                return createDept;
+            }
+
+            public void setCreateDept(String createDept) {
+                this.createDept = createDept;
+            }
+
+            public String getCreateTime() {
+                return createTime;
+            }
+
+            public void setCreateTime(String createTime) {
+                this.createTime = createTime;
+            }
+
+            public String getUpdateUser() {
+                return updateUser;
+            }
+
+            public void setUpdateUser(String updateUser) {
+                this.updateUser = updateUser;
+            }
+
+            public String getUpdateTime() {
+                return updateTime;
+            }
+
+            public void setUpdateTime(String updateTime) {
+                this.updateTime = updateTime;
+            }
+
+            public int getStatus() {
+                return status;
+            }
+
+            public void setStatus(int status) {
+                this.status = status;
+            }
+
+            public int getIsDeleted() {
+                return isDeleted;
+            }
+
+            public void setIsDeleted(int isDeleted) {
+                this.isDeleted = isDeleted;
+            }
+
+            public String getJfId() {
+                return jfId;
+            }
+
+            public void setJfId(String jfId) {
+                this.jfId = jfId;
+            }
+
+            public String getXm() {
+                return xm;
+            }
+
+            public void setXm(String xm) {
+                this.xm = xm;
+            }
+
+            public String getXb() {
+                return xb;
+            }
+
+            public void setXb(String xb) {
+                this.xb = xb;
+            }
+
+            public String getSfzh() {
+                return sfzh;
+            }
+
+            public void setSfzh(String sfzh) {
+                this.sfzh = sfzh;
+            }
+
+            public String getLxdh() {
+                return lxdh;
+            }
+
+            public void setLxdh(String lxdh) {
+                this.lxdh = lxdh;
+            }
+
+            public String getLb() {
+                return lb;
+            }
+
+            public void setLb(String lb) {
+                this.lb = lb;
+            }
+        }
+    }
+}

+ 405 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/model/entity/RwEntity.java

@@ -0,0 +1,405 @@
+package com.xwkj.rwxffk.mvp.model.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class RwEntity {
+
+    /**
+     * code : 200
+     * success : true
+     * data : {"records":[{"id":"1702191084710408194","createUser":"1123598821738675201","createDept":"1677212139158364161","createTime":"2023-09-14 13:22:34","updateUser":"1123598821738675201","updateTime":"2023-09-14 13:22:34","status":1,"isDeleted":0,"rwly":"mdjf_dj","rwmc":"测试1234123","rwid":"1702191084383252482","rwzt":"未签收","rwjssj":"","rwxfsj":"2023-09-14 13:22:34","userId":-1,"sssq":"1686572435324878850"}],"total":1,"size":10,"current":1,"orders":[],"optimizeCountSql":true,"searchCount":true,"maxLimit":-1,"countId":"","pages":1}
+     * msg : 操作成功
+     */
+
+    private int code;
+    private boolean success;
+    private DataBean data;
+    private String msg;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public DataBean getData() {
+        return data;
+    }
+
+    public void setData(DataBean data) {
+        this.data = data;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static class DataBean {
+        /**
+         * records : [{"id":"1702191084710408194","createUser":"1123598821738675201","createDept":"1677212139158364161","createTime":"2023-09-14 13:22:34","updateUser":"1123598821738675201","updateTime":"2023-09-14 13:22:34","status":1,"isDeleted":0,"rwly":"mdjf_dj","rwmc":"测试1234123","rwid":"1702191084383252482","rwzt":"未签收","rwjssj":"","rwxfsj":"2023-09-14 13:22:34","userId":-1,"sssq":"1686572435324878850"}]
+         * total : 1
+         * size : 10
+         * current : 1
+         * orders : []
+         * optimizeCountSql : true
+         * searchCount : true
+         * maxLimit : -1
+         * countId :
+         * pages : 1
+         */
+
+        private int total;
+        private int size;
+        private int current;
+        private boolean optimizeCountSql;
+        private boolean searchCount;
+        private int maxLimit;
+        private String countId;
+        private int pages;
+        private List<RecordsBean> records;
+        private List<?> orders;
+
+        public int getTotal() {
+            return total;
+        }
+
+        public void setTotal(int total) {
+            this.total = total;
+        }
+
+        public int getSize() {
+            return size;
+        }
+
+        public void setSize(int size) {
+            this.size = size;
+        }
+
+        public int getCurrent() {
+            return current;
+        }
+
+        public void setCurrent(int current) {
+            this.current = current;
+        }
+
+        public boolean isOptimizeCountSql() {
+            return optimizeCountSql;
+        }
+
+        public void setOptimizeCountSql(boolean optimizeCountSql) {
+            this.optimizeCountSql = optimizeCountSql;
+        }
+
+        public boolean isSearchCount() {
+            return searchCount;
+        }
+
+        public void setSearchCount(boolean searchCount) {
+            this.searchCount = searchCount;
+        }
+
+        public int getMaxLimit() {
+            return maxLimit;
+        }
+
+        public void setMaxLimit(int maxLimit) {
+            this.maxLimit = maxLimit;
+        }
+
+        public String getCountId() {
+            return countId;
+        }
+
+        public void setCountId(String countId) {
+            this.countId = countId;
+        }
+
+        public int getPages() {
+            return pages;
+        }
+
+        public void setPages(int pages) {
+            this.pages = pages;
+        }
+
+        public List<RecordsBean> getRecords() {
+            return records;
+        }
+
+        public void setRecords(List<RecordsBean> records) {
+            this.records = records;
+        }
+
+        public List<?> getOrders() {
+            return orders;
+        }
+
+        public void setOrders(List<?> orders) {
+            this.orders = orders;
+        }
+
+        public static class RecordsBean implements Serializable {
+            /**
+             * id : 1702191084710408194
+             * createUser : 1123598821738675201
+             * createDept : 1677212139158364161
+             * createTime : 2023-09-14 13:22:34
+             * updateUser : 1123598821738675201
+             * updateTime : 2023-09-14 13:22:34
+             * status : 1
+             * isDeleted : 0
+             * rwly : mdjf_dj
+             * rwmc : 测试1234123
+             * rwid : 1702191084383252482
+             * rwzt : 未签收
+             * rwjssj :
+             * rwxfsj : 2023-09-14 13:22:34
+             * userId : -1
+             * sssq : 1686572435324878850
+             */
+
+            private String id;
+            private String createUser;
+            private String createDept;
+            private String createTime;
+            private String updateUser;
+            private String updateTime;
+            private int status;
+            private int isDeleted;
+            private String rwly; // wgr_info,mdjf_dj
+            private String rwmc;
+            private String rwid;
+            private String rwzt;
+            private String rwjssj;
+            private String rwxfsj;
+            private String userId;
+            private String sssq;
+            private String rwlx;
+            private String zl;
+            private String bjrdh;
+            private String jflx;
+            private String jfyy;
+            private String jffsdd;
+            private String type;
+            private List<MdjfXqEntity.DataBean.MdjfRyListBean> mdjfRyList;
+
+            public String getType() {
+                return type;
+            }
+
+            public void setType(String type) {
+                this.type = type;
+            }
+
+            public String getJflx() {
+                return jflx;
+            }
+
+            public void setJflx(String jflx) {
+                this.jflx = jflx;
+            }
+
+            public String getJfyy() {
+                return jfyy;
+            }
+
+            public void setJfyy(String jfyy) {
+                this.jfyy = jfyy;
+            }
+
+            public String getJffsdd() {
+                return jffsdd;
+            }
+
+            public void setJffsdd(String jffsdd) {
+                this.jffsdd = jffsdd;
+            }
+
+            public List<MdjfXqEntity.DataBean.MdjfRyListBean> getMdjfRyList() {
+                return mdjfRyList;
+            }
+
+            public void setMdjfRyList(List<MdjfXqEntity.DataBean.MdjfRyListBean> mdjfRyList) {
+                this.mdjfRyList = mdjfRyList;
+            }
+
+            public String getBjrdh() {
+                return bjrdh;
+            }
+
+            public void setBjrdh(String bjrdh) {
+                this.bjrdh = bjrdh;
+            }
+
+            public String getZl() {
+                return zl;
+            }
+
+            public void setZl(String zl) {
+                this.zl = zl;
+            }
+
+            public String getBz() {
+                return bz;
+            }
+
+            public void setBz(String bz) {
+                this.bz = bz;
+            }
+
+            private String bz;
+
+            public String getRwlx() {
+                return rwlx;
+            }
+
+            public void setRwlx(String rwlx) {
+                this.rwlx = rwlx;
+            }
+
+            public String getId() {
+                return id;
+            }
+
+            public void setId(String id) {
+                this.id = id;
+            }
+
+            public String getCreateUser() {
+                return createUser;
+            }
+
+            public void setCreateUser(String createUser) {
+                this.createUser = createUser;
+            }
+
+            public String getCreateDept() {
+                return createDept;
+            }
+
+            public void setCreateDept(String createDept) {
+                this.createDept = createDept;
+            }
+
+            public String getCreateTime() {
+                return createTime;
+            }
+
+            public void setCreateTime(String createTime) {
+                this.createTime = createTime;
+            }
+
+            public String getUpdateUser() {
+                return updateUser;
+            }
+
+            public void setUpdateUser(String updateUser) {
+                this.updateUser = updateUser;
+            }
+
+            public String getUpdateTime() {
+                return updateTime;
+            }
+
+            public void setUpdateTime(String updateTime) {
+                this.updateTime = updateTime;
+            }
+
+            public int getStatus() {
+                return status;
+            }
+
+            public void setStatus(int status) {
+                this.status = status;
+            }
+
+            public int getIsDeleted() {
+                return isDeleted;
+            }
+
+            public void setIsDeleted(int isDeleted) {
+                this.isDeleted = isDeleted;
+            }
+
+            public String getRwly() {
+                return rwly;
+            }
+
+            public void setRwly(String rwly) {
+                this.rwly = rwly;
+            }
+
+            public String getRwmc() {
+                return rwmc;
+            }
+
+            public void setRwmc(String rwmc) {
+                this.rwmc = rwmc;
+            }
+
+            public String getRwid() {
+                return rwid;
+            }
+
+            public void setRwid(String rwid) {
+                this.rwid = rwid;
+            }
+
+            public String getRwzt() {
+                return rwzt;
+            }
+
+            public void setRwzt(String rwzt) {
+                this.rwzt = rwzt;
+            }
+
+            public String getRwjssj() {
+                return rwjssj;
+            }
+
+            public void setRwjssj(String rwjssj) {
+                this.rwjssj = rwjssj;
+            }
+
+            public String getRwxfsj() {
+                return rwxfsj;
+            }
+
+            public void setRwxfsj(String rwxfsj) {
+                this.rwxfsj = rwxfsj;
+            }
+
+            public String getUserId() {
+                return userId;
+            }
+
+            public void setUserId(String userId) {
+                this.userId = userId;
+            }
+
+            public String getSssq() {
+                return sssq;
+            }
+
+            public void setSssq(String sssq) {
+                this.sssq = sssq;
+            }
+        }
+    }
+}

+ 80 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/presenter/MainPresenter.java

@@ -0,0 +1,80 @@
+package com.xwkj.rwxffk.mvp.presenter;
+
+import android.app.Application;
+
+import com.jess.arms.integration.AppManager;
+import com.jess.arms.di.scope.ActivityScope;
+import com.jess.arms.mvp.BasePresenter;
+import com.jess.arms.http.imageloader.ImageLoader;
+
+import me.jessyan.rxerrorhandler.core.RxErrorHandler;
+
+import javax.inject.Inject;
+
+import com.xwkj.rwxffk.app.utils.CommonInterFace;
+import com.xwkj.rwxffk.app.utils.ReqToBus;
+import com.xwkj.rwxffk.mvp.contract.MainContract;
+
+import java.util.Map;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+public class MainPresenter extends BasePresenter<MainContract.Model, MainContract.View> {
+    @Inject
+    RxErrorHandler mErrorHandler;
+    @Inject
+    Application mApplication;
+    @Inject
+    ImageLoader mImageLoader;
+    @Inject
+    AppManager mAppManager;
+
+    @Inject
+    public MainPresenter(MainContract.Model model, MainContract.View rootView) {
+        super(model, rootView);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mErrorHandler = null;
+        this.mAppManager = null;
+        this.mImageLoader = null;
+        this.mApplication = null;
+    }
+
+    public void login(Map<String, Object> map) {
+        ReqToBus.getInstance().init(mApplication).getRequest(map, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onSuccess(result);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+                if (mRootView != null) {
+                    mRootView.onError(throwable);
+                }
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+    }
+}

+ 169 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/presenter/WqsRwPresenter.java

@@ -0,0 +1,169 @@
+package com.xwkj.rwxffk.mvp.presenter;
+
+import android.app.Application;
+
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.integration.AppManager;
+import com.jess.arms.di.scope.FragmentScope;
+import com.jess.arms.mvp.BasePresenter;
+import com.jess.arms.http.imageloader.ImageLoader;
+
+import me.jessyan.rxerrorhandler.core.RxErrorHandler;
+
+import javax.inject.Inject;
+
+import com.xwkj.rwxffk.app.utils.CommonInterFace;
+import com.xwkj.rwxffk.app.utils.ReqToBus;
+import com.xwkj.rwxffk.mvp.contract.WqsRwContract;
+import com.xwkj.rwxffk.mvp.model.entity.RwEntity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@FragmentScope
+public class WqsRwPresenter extends BasePresenter<WqsRwContract.Model, WqsRwContract.View> {
+    @Inject
+    RxErrorHandler mErrorHandler;
+    @Inject
+    Application mApplication;
+    @Inject
+    ImageLoader mImageLoader;
+    @Inject
+    AppManager mAppManager;
+
+    @Inject
+    public WqsRwPresenter(WqsRwContract.Model model, WqsRwContract.View rootView) {
+        super(model, rootView);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mErrorHandler = null;
+        this.mAppManager = null;
+        this.mImageLoader = null;
+        this.mApplication = null;
+    }
+
+    public void qs(Map<String, String> map, RwEntity.DataBean.RecordsBean bean) {
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("className", "rwxffkbController");
+        map1.put("methodName", "update");
+        map1.put("params", map);
+        ReqToBus.getInstance().init(mApplication).getRequest(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onSuccess(result, 1, bean);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+                ToastUtils.show("签收失败,请重试!");
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+       /* RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), JsonMapUtil.map2jsonstr(map));
+        mModel.rewQs(body)
+                .subscribeOn(Schedulers.io())
+                .doOnSubscribe(disposable -> {
+                    Timber.v("requestLogin===doOnSubscribe:" + Thread.currentThread().getName());
+                    addDispose(disposable);//在订阅时必须调用这个方法,不然Activity退出时可能内存泄漏
+                }).subscribeOn(AndroidSchedulers.mainThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
+                .subscribe(new ErrorHandleSubscriber<JsonObject>(mErrorHandler) {
+                    @Override
+                    public void onNext(JsonObject jsonObject) {
+                        String result = jsonObject.toString();
+                        System.out.println("qs" + result);
+                        mRootView.onSuccess(result, 1);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        Utils.getInstances().dismissDialog();
+                        ToastUtils.show("签收失败,请重试");
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        super.onComplete();
+
+                    }
+                });*/
+    }
+
+    public void getRwLb(Map<String, String> map) {
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("className", "rwxffkbController");
+        map1.put("methodName", "page");
+        map1.put("params", map);
+        ReqToBus.getInstance().init(mApplication).getRequest(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onSuccess(result, 0, null);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+                ToastUtils.show("加载失败,请重试!");
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+        /*mModel.getRwLb(map)
+                .subscribeOn(Schedulers.io())
+                .doOnSubscribe(disposable -> {
+                    Timber.v("requestLogin===doOnSubscribe:" + Thread.currentThread().getName());
+                    addDispose(disposable);//在订阅时必须调用这个方法,不然Activity退出时可能内存泄漏
+                }).subscribeOn(AndroidSchedulers.mainThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
+                .subscribe(new ErrorHandleSubscriber<JsonObject>(mErrorHandler) {
+                    @Override
+                    public void onNext(JsonObject jsonObject) {
+                        String result = jsonObject.toString();
+                        System.out.println("列表" + result);
+                        mRootView.onSuccess(result, 0);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        Utils.getInstances().dismissDialog();
+                        //oastUtils.show("签收失败,请重试");
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        super.onComplete();
+
+                    }
+                });*/
+    }
+}

+ 83 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/presenter/YqsRwPresenter.java

@@ -0,0 +1,83 @@
+package com.xwkj.rwxffk.mvp.presenter;
+
+import android.app.Application;
+
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.integration.AppManager;
+import com.jess.arms.di.scope.FragmentScope;
+import com.jess.arms.mvp.BasePresenter;
+import com.jess.arms.http.imageloader.ImageLoader;
+
+import me.jessyan.rxerrorhandler.core.RxErrorHandler;
+
+import javax.inject.Inject;
+
+import com.xwkj.rwxffk.app.utils.CommonInterFace;
+import com.xwkj.rwxffk.app.utils.ReqToBus;
+import com.xwkj.rwxffk.mvp.contract.YqsRwContract;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@FragmentScope
+public class YqsRwPresenter extends BasePresenter<YqsRwContract.Model, YqsRwContract.View> {
+    @Inject
+    RxErrorHandler mErrorHandler;
+    @Inject
+    Application mApplication;
+    @Inject
+    ImageLoader mImageLoader;
+    @Inject
+    AppManager mAppManager;
+
+    @Inject
+    public YqsRwPresenter(YqsRwContract.Model model, YqsRwContract.View rootView) {
+        super(model, rootView);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mErrorHandler = null;
+        this.mAppManager = null;
+        this.mImageLoader = null;
+        this.mApplication = null;
+    }
+    public void getRwLb(Map<String, String> map) {
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("className", "rwxffkbController");
+        map1.put("methodName", "page");
+        map1.put("params", map);
+        ReqToBus.getInstance().init(mApplication).getRequest(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onSuccess(result);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+                ToastUtils.show("刷新失败,请重试!");
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+    }
+}

+ 328 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/activity/MainActivity.java

@@ -0,0 +1,328 @@
+package com.xwkj.rwxffk.mvp.ui.activity;
+
+import android.Manifest;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
+
+import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.tabs.TabLayoutMediator;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.base.BaseActivity;
+import com.jess.arms.di.component.AppComponent;
+import com.jess.arms.utils.ArmsUtils;
+
+import com.xm.permissions.OnRequestPermissionsCallback;
+import com.xm.permissions.XmPermissions;
+import com.xwkj.rwxffk.app.utils.Login;
+import com.xwkj.rwxffk.di.component.DaggerMainComponent;
+import com.xwkj.rwxffk.mvp.contract.MainContract;
+import com.xwkj.rwxffk.mvp.presenter.MainPresenter;
+
+import com.xwkj.rwxffk.R;
+import com.xwkj.rwxffk.mvp.ui.fragment.WqsRwFragment;
+import com.xwkj.rwxffk.mvp.ui.fragment.YqsRwFragment;
+import com.zkjc.common.utils.Utils;
+import com.zkjc.common.view.CommonTitleBar;
+
+
+import org.jetbrains.annotations.NotNull;
+import org.xutils.common.util.MD5;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import butterknife.BindView;
+
+import static com.jess.arms.utils.Preconditions.checkNotNull;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 15:34
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public class MainActivity extends BaseActivity<MainPresenter> implements MainContract.View, OnRequestPermissionsCallback {
+    private XmPermissions xmPermissions;
+    @BindView(R.id.title_bar)
+    CommonTitleBar titleBar;
+    @BindView(R.id.tab_mdjf)
+    TabLayout tabMdjf;
+    @BindView(R.id.fl_kd)
+    ViewPager2 flKd;
+    private WqsRwFragment wqsRwFragment;
+    private YqsRwFragment yqsRwFragment;
+    private List<Fragment> fragments;
+    @Override
+    public void setupActivityComponent(@NonNull AppComponent appComponent) {
+        DaggerMainComponent //如找不到该类,请编译一下项目
+                .builder()
+                .appComponent(appComponent)
+                .view(this)
+                .build()
+                .inject(this);
+    }
+
+    @Override
+    public int initView(@Nullable Bundle savedInstanceState) {
+        return R.layout.activity_main; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
+    }
+
+    @Override
+    public void initData(@Nullable Bundle savedInstanceState) {
+        initQX();
+        initLogin();
+    }
+
+    private void initQX() {
+        xmPermissions = XmPermissions.Companion.newInstance(this);
+        xmPermissions.setOnRequestPermissionsCallback(this);
+        xmPermissions.requestPermissions(Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION,
+                Manifest.permission.ACCESS_COARSE_LOCATION);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        initLogin();
+    }
+
+    private void initLogin() {
+        Map<String, String> map = new HashMap<>();
+        map.put("username", "204382");
+        map.put("password", MD5.md5("123456"));
+        map.put("tenantId", "000000");
+
+        map.put("code", "wybs");
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("className", "bladeTokenEndPoint");
+        map1.put("methodName", "token");
+        map1.put("params", map);
+        mPresenter.login(map1);
+    }
+
+    @Override
+    public void onSuccess(String result) {
+
+        Utils.getInstances().dismissDialog();
+        System.out.println("****" + result);
+        try {
+            System.out.println("用户信息" + result);
+            JsonObject jsonObject = new JsonParser().parse(result).getAsJsonObject();
+
+            if (jsonObject.has("access_token")) {
+                Gson gson = new Gson();
+                Login entity = gson.fromJson(result, Login.class);
+                String role_name = entity.getRole_name();
+                /*if (!TextUtils.isEmpty(role_name) && role_name.contains("派出所管理员")) {
+                    Utils.getInstances().dismissDialog();
+                    ToastUtils.show("该账户暂不可登录APP,请换其他账号登录");
+                    return;
+                }*/
+
+                Utils.getInstances().dismissDialog();
+                saveLoginInfo(entity);
+
+
+            } else {
+                String error_description = jsonObject.get("error_description").getAsString();
+                ToastUtils.show(error_description);
+            }
+        } catch (Exception e) {
+            ToastUtils.show("登录失败!" + e.getMessage());
+            e.printStackTrace();
+        }
+
+    }
+
+    private void saveLoginInfo(Login entity) {
+        SharedPreferences sharedPreferences = getSharedPreferences("sys", MODE_PRIVATE);
+        SharedPreferences.Editor edit = sharedPreferences.edit();
+        edit.putString("token", entity.getAccess_token());
+        edit.putString("refresh_token", entity.getRefresh_token());
+        edit.putString("userName", entity.getReal_name());
+        edit.putString("tenantId", entity.getTenant_id());
+        edit.putString("account", entity.getAccount());
+        edit.putString("tokenType", entity.getToken_type());
+        edit.putString("userId", entity.getUser_id());
+        edit.putInt("expires_in", entity.getExpires_in());
+        edit.putString("dept_id", entity.getDept_id());
+        edit.putString("phone", entity.getPhone());
+        edit.putString("pcsmc", entity.getPcsmc());
+        edit.putString("dept_name", entity.getDept_name());
+        edit.putString("jh", entity.getPoliceNumber());
+        edit.putString("role_name", entity.getRole_name());
+        edit.putString("pcsDm", entity.getPcsDm());
+        edit.putString("xqt_image", entity.getZp());
+        edit.putString("mj_id", entity.getMjId());
+        edit.putString("deptCategory", entity.getDeptCategory()); // 7是社区
+        edit.putString("mj_name", entity.getMjname());
+        edit.putString("sspcs", entity.getSspcs());
+//        edit.putString("zh", etZh.getText().toString().trim());
+//        edit.putString("mm", MD5.md5(etMm.getText().toString().trim()));
+        //  edit.putInt("app_version_code", ApkUtils.getVersionCode(LoginActivity.this));
+        String ancestors = entity.getAncestors();
+        if (!TextUtils.isEmpty(ancestors) && ancestors.contains("220200000000")) {
+            edit.putBoolean("isJlUser", true);
+        } else {
+            edit.putBoolean("isJlUser", false);
+        }
+        //  edit.putLong("loginTime", System.currentTimeMillis() / 1000);
+
+        Utils.getInstances().dismissDialog();
+        edit.commit();
+        sharedPreferences.edit().putBoolean("isFirst", false).commit();
+
+        initUI();
+    }
+
+    private void initUI() {
+        titleBar.setTitle("任务列表");
+        String[] titles = {"未签收", "已签收",};
+        wqsRwFragment= WqsRwFragment.newInstance();
+        yqsRwFragment= YqsRwFragment.newInstance();
+        fragments = new ArrayList<>();
+        fragments.add(wqsRwFragment);
+        fragments.add(yqsRwFragment);
+        FragmentStateAdapter mAdapter = new FragmentStateAdapter(this) {
+            @Override
+            public int getItemCount() {
+                return fragments.size();
+            }
+
+            @NonNull
+            @Override
+            public Fragment createFragment(int position) {
+                return fragments.get(position);
+            }
+
+        };
+        flKd.setAdapter(mAdapter);
+        new TabLayoutMediator(tabMdjf, flKd, new TabLayoutMediator.TabConfigurationStrategy() {
+            @Override
+            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
+                tab.setText(titles[position]);
+                // Fragment fragment = fragments.get(position);
+
+
+            }
+        }).attach();
+
+        flKd.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+                super.onPageSelected(position);
+                /*Message data = new Message();
+                data.what = 0;
+                data.obj = titles[position];
+                if (position == 0) {
+                    wtjFragment.setData(data);
+                } else if (position == 1) {
+                    ytjFragment.setData(data);
+                }*/
+
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+                super.onPageScrollStateChanged(state);
+            }
+        });
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+        xmPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults);
+/*        if (isFinishing()) {
+            return;
+        }
+        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+        } else {
+        }*/
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        xmPermissions.onActivityResult(requestCode);
+    }
+
+    @Override
+    public void onDenied(@NotNull String[] strings) {
+
+    }
+
+    @Override
+    public void onGranted() {
+
+    }
+
+    @Override
+    public void onPermanentlyDenied(@NotNull String[] strings) {
+
+    }
+
+    @Override
+    public void onSettingBackDenied(@NotNull String[] strings) {
+
+    }
+
+    @Override
+    public void showLoading() {
+
+    }
+
+    @Override
+    public void hideLoading() {
+
+    }
+
+    @Override
+    public void onError(Throwable mThrowable) {
+
+    }
+
+    @Override
+    public void showMessage(@NonNull String message) {
+        checkNotNull(message);
+        ArmsUtils.snackbarText(message);
+    }
+
+    @Override
+    public void launchActivity(@NonNull Intent intent) {
+        checkNotNull(intent);
+        ArmsUtils.startActivity(intent);
+    }
+
+    @Override
+    public void killMyself() {
+        finish();
+    }
+}

+ 275 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/adapter/BaseRecycleAdapter.java

@@ -0,0 +1,275 @@
+package com.xwkj.rwxffk.mvp.ui.adapter;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.bumptech.glide.Glide;
+import com.squareup.picasso.Picasso;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public abstract class BaseRecycleAdapter<T> extends RecyclerView.Adapter<BaseRecycleAdapter.BaseViewHolder>{
+
+    protected List<T> datas;
+
+    public BaseRecycleAdapter(List<T> datas) {
+        this.datas = datas == null ? new ArrayList<T>() : datas;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return position;
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+
+        View view = LayoutInflater.from(parent.getContext()).inflate(getLayoutId(), parent, false);
+        return new BaseViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(BaseRecycleAdapter.BaseViewHolder holder, final int position) {
+
+        bindData(holder, position);
+
+    }
+
+
+    /**
+     * 刷新数据
+     *
+     * @param datas
+     */
+    public void refresh(List<T> datas) {
+        this.datas.clear();
+        addDatas(datas);
+//        if(datas.isEmpty()) return;
+//        this.datas = datas;
+        notifyDataSetChanged();
+    }
+
+
+    /**
+     * 批量添加数据
+     *
+     * @param datas
+     */
+    public void addDatas(List<T> datas) {
+        if (null != datas) {
+            this.datas.addAll(datas);
+            notifyDataSetChanged();
+        }
+    }
+
+    /**
+     * 添加数据
+     *
+     * @param data
+     */
+    public void addData(T data) {
+        this.datas.add(data);
+        notifyDataSetChanged();
+    }
+
+    /**
+     * 绑定数据
+     *
+     * @param holder   具体的viewHolder
+     * @param position 对应的索引
+     */
+    protected abstract void bindData(BaseViewHolder holder, int position);
+
+
+    @Override
+    public int getItemCount() {
+
+        return datas == null ? 0 : datas.size();
+    }
+
+    public interface OnRecyclerViewListener {
+        void onItemClick(int position);
+
+        boolean onItemLongClick(int position);
+    }
+
+    public interface OnRecyclerViewListenerV2 {
+        void onItemClick(View view, int position);
+
+        boolean onItemLongClick(View view, int position);
+    }
+    public interface OnRecyclerViewListenerV3 {
+        void onItemClick(View view, int position);
+
+        boolean onItemLongClick(View view, int position);
+    }
+    public interface OnRecyclerViewListenerV4 {
+        void onItemClick(View view, int position);
+
+        boolean onItemLongClick(View view, int position);
+    }
+
+    /**
+     * 封装ViewHolder ,子类可以直接使用
+     */
+    public class BaseViewHolder extends RecyclerView.ViewHolder {
+
+
+        private Map<Integer, View> mViewMap;
+
+        public BaseViewHolder(View itemView) {
+            super(itemView);
+            mViewMap = new HashMap<>();
+        }
+
+        /**
+         * 获取设置的view
+         *
+         * @param id
+         * @return
+         */
+        public View getView(int id) {
+            View view = mViewMap.get(id);
+            if (view == null) {
+                view = itemView.findViewById(id);
+                mViewMap.put(id, view);
+            }
+            return view;
+        }
+
+        public void setOnItemClickListener(int id, final int position, final OnRecyclerViewListener listener) {
+            getView(id).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (listener != null) {
+                        listener.onItemClick(position);
+                    }
+                }
+            });
+        }
+
+        public void setOnItemClickListenerV2(int id, final int position, final OnRecyclerViewListenerV2 listener) {
+            getView(id).setOnClickListener(v -> listener.onItemClick(v, position));
+        }
+        public void setOnItemClickListenerV3(int id, final int position, final OnRecyclerViewListenerV3 listener) {
+            getView(id).setOnClickListener(v -> listener.onItemClick(v, position));
+        }
+        public void setOnItemClickListenerV4(int id, final int position, final OnRecyclerViewListenerV4 listener) {
+            getView(id).setOnClickListener(v -> listener.onItemClick(v, position));
+        }
+        public void setOnItemLongClickListener(int id, final int position, final OnRecyclerViewListener listener) {
+            getView(id).setOnLongClickListener(new View.OnLongClickListener() {
+                @Override
+                public boolean onLongClick(View v) {
+                    return listener.onItemLongClick(position);
+                }
+            });
+        }
+
+        public void setOnItemLongClickListenerV2(int id, final int position, final OnRecyclerViewListenerV2 listener) {
+            getView(id).setOnLongClickListener(v -> listener.onItemLongClick(v, position));
+        }
+        public void setOnItemLongClickListenerV3(int id, final int position, final OnRecyclerViewListenerV3 listener) {
+            getView(id).setOnLongClickListener(v -> listener.onItemLongClick(v, position));
+        }
+        public void setOnItemLongClickListenerV4(int id, final int position, final OnRecyclerViewListenerV4 listener) {
+            getView(id).setOnLongClickListener(v -> listener.onItemLongClick(v, position));
+        }
+    }
+
+    /**
+     * 获取子item
+     *
+     * @return
+     */
+    public abstract int getLayoutId();
+
+    /**
+     * 设置文本属性
+     *
+     * @param view
+     * @param text
+     */
+    public void setItemText(View view, String text) {
+        if (view instanceof TextView) {
+            ((TextView) view).setText(text);
+        }
+    }
+
+    /**
+     * 设置文本属性
+     *
+     * @param view
+     * @param text
+     */
+    public void setItemTextAndColor(View view, String text, int color) {
+        if (view instanceof TextView) {
+            ((TextView) view).setText(text);
+            ((TextView) view).setTextColor(color);
+        }
+    }
+
+    public void setItemTextColorAndHid(View view, String text, int color) {
+        if (view instanceof TextView) {
+            ((TextView) view).setText(text);
+            ((TextView) view).setTextColor(color);
+        }
+    }
+
+    /**
+     * 设置图片属性
+     *
+     * @param view
+     * @param resId
+     */
+    public void setItemImageView(View view, int resId) {
+        if (view instanceof ImageView) {
+            ((TextView) view).setBackgroundResource(resId);
+        }
+    }
+
+    /**
+     * 设置图片属性
+     *
+     * @param view
+     * @param url
+     */
+    public void setItemImage(View view, String url) {
+        if (view instanceof ImageView) {
+            url = "http://192.168.20.228:7213/jlyqfk/" + url;
+            /*((TextView) view).setBackgroundResource(resId);*/
+            Picasso.with(view.getContext()).load(url).fit().into(((ImageView) view));
+            //  ImagePicker.getInstance().getImageLoader().displayImage((Activity)view.getContext(), url, ((ImageView) view), 0, 0);
+        }
+    }
+
+    public void setItemImageV2(View view, String base64) {
+        if (view instanceof ImageView) {
+            Glide.with(view.getContext())
+                    .load(base64)
+                    .into(((ImageView) view));
+            //  ImagePicker.getInstance().getImageLoader().displayImage((Activity)view.getContext(), url, ((ImageView) view), 0, 0);
+        }
+    }
+
+    public void setItemGirdView(View view, BaseRecycleAdapter adapter) {
+        if (view instanceof RecyclerView) {
+            ((RecyclerView) view).setLayoutManager(new LinearLayoutManager(view.getContext(), LinearLayoutManager.HORIZONTAL, false));
+            ((RecyclerView) view).setAdapter(adapter);
+        }
+    }
+}

+ 42 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/adapter/RwLbAdapter.java

@@ -0,0 +1,42 @@
+package com.xwkj.rwxffk.mvp.ui.adapter;
+
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.xwkj.rwxffk.R;
+import com.xwkj.rwxffk.mvp.model.entity.RwEntity;
+
+import java.util.List;
+
+public class RwLbAdapter extends BaseRecycleAdapter<RwEntity.DataBean.RecordsBean> {
+    public RwLbAdapter(List<RwEntity.DataBean.RecordsBean> datas) {
+        super(datas);
+    }
+
+    @Override
+    protected void bindData(BaseViewHolder holder, int position) {
+        if (holder != null) {
+            holder.setOnItemClickListener(R.id.bt_qs, position, onRecyclerViewListener);
+            holder.setOnItemLongClickListener(R.id.bt_qs, position, onRecyclerViewListener);
+            RwEntity.DataBean.RecordsBean bean = datas.get(position);
+            setItemText(holder.getView(R.id.rwmc), bean.getRwmc());
+            String rwly = bean.getRwly();
+            setItemText(holder.getView(R.id.rwlx), bean.getRwlx());
+            setItemText(holder.getView(R.id.xfsj), bean.getRwxfsj());
+            setItemText(holder.getView(R.id.zl), bean.getZl());
+            setItemText(holder.getView(R.id.bz), bean.getBz());
+        }
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.item_rwlb;
+    }
+
+    private OnRecyclerViewListener onRecyclerViewListener;
+
+    public void setOnRecyclerViewListener(OnRecyclerViewListener onRecyclerViewListener) {
+        this.onRecyclerViewListener = onRecyclerViewListener;
+    }
+
+
+}
+

+ 49 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/adapter/RwLbAdapterV2.java

@@ -0,0 +1,49 @@
+package com.xwkj.rwxffk.mvp.ui.adapter;
+
+import android.view.View;
+
+import com.xwkj.rwxffk.R;
+import com.xwkj.rwxffk.mvp.model.entity.RwEntity;
+
+import java.util.List;
+
+public class RwLbAdapterV2 extends BaseRecycleAdapter<RwEntity.DataBean.RecordsBean> {
+    public RwLbAdapterV2(List<RwEntity.DataBean.RecordsBean> datas) {
+        super(datas);
+    }
+
+    @Override
+    protected void bindData(BaseViewHolder holder, int position) {
+        if (holder != null) {
+
+            holder.setOnItemClickListener(R.id.bt_qs, position, onRecyclerViewListener);
+            holder.setOnItemLongClickListener(R.id.bt_qs, position, onRecyclerViewListener);
+            RwEntity.DataBean.RecordsBean bean = datas.get(position);
+            setItemText(holder.getView(R.id.rwmc), bean.getRwmc());
+            View view = holder.getView(R.id.bt_qs);
+            String rwly = bean.getRwly();
+            if ("mdjf_dj".equals(rwly) && !"1".equals(bean.getType())) {
+                view.setVisibility(View.VISIBLE);
+            } else {
+                view.setVisibility(View.GONE);
+            }
+
+            setItemText(holder.getView(R.id.rwlx), bean.getRwlx());
+            setItemText(holder.getView(R.id.xfsj), bean.getRwjssj());
+            setItemText(holder.getView(R.id.zl), bean.getZl());
+            setItemText(holder.getView(R.id.bz), bean.getBz());
+        }
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.item_rwlb2;
+    }
+
+
+    private OnRecyclerViewListener onRecyclerViewListener;
+
+    public void setOnRecyclerViewListener(OnRecyclerViewListener onRecyclerViewListener) {
+        this.onRecyclerViewListener = onRecyclerViewListener;
+    }
+}

+ 315 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/fragment/WqsRwFragment.java

@@ -0,0 +1,315 @@
+package com.xwkj.rwxffk.mvp.ui.fragment;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Message;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.base.BaseFragment;
+import com.jess.arms.di.component.AppComponent;
+import com.jess.arms.utils.ArmsUtils;
+
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+import com.scwang.smart.refresh.header.ClassicsHeader;
+import com.scwang.smart.refresh.layout.SmartRefreshLayout;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.constant.SpinnerStyle;
+import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener;
+import com.xwkj.rwxffk.di.component.DaggerWqsRwComponent;
+import com.xwkj.rwxffk.mvp.contract.WqsRwContract;
+import com.xwkj.rwxffk.mvp.model.entity.RwEntity;
+import com.xwkj.rwxffk.mvp.presenter.WqsRwPresenter;
+
+import com.xwkj.rwxffk.R;
+import com.xwkj.rwxffk.mvp.ui.adapter.BaseRecycleAdapter;
+import com.xwkj.rwxffk.mvp.ui.adapter.RwLbAdapter;
+import com.zkjc.common.utils.ScreenUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import butterknife.BindView;
+
+import static com.jess.arms.utils.Preconditions.checkNotNull;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public class WqsRwFragment extends BaseFragment<WqsRwPresenter> implements WqsRwContract.View , OnRefreshLoadMoreListener {
+
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    @BindView(R.id.smart_refresh)
+    SmartRefreshLayout smart_refresh;
+    private List<RwEntity.DataBean.RecordsBean> datas;
+    private int pageNo = 1;
+    private int pageSize = 10;
+    private RwLbAdapter mAdapter;
+
+    public static WqsRwFragment newInstance() {
+        WqsRwFragment fragment = new WqsRwFragment();
+        return fragment;
+    }
+
+    @Override
+    public void setupFragmentComponent(@NonNull AppComponent appComponent) {
+        DaggerWqsRwComponent //如找不到该类,请编译一下项目
+                .builder()
+                .appComponent(appComponent)
+                .view(this)
+                .build()
+                .inject(this);
+    }
+
+    @Override
+    public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.fragment_wqs_rw, container, false);
+    }
+
+    @Override
+    public void initData(@Nullable Bundle savedInstanceState) {
+//设置 Header
+        smart_refresh.setRefreshHeader(new ClassicsHeader(getActivity()).setEnableLastTime(true));
+        //设置 Footer
+        smart_refresh.setRefreshFooter(new ClassicsFooter(getActivity()).setSpinnerStyle(SpinnerStyle.FixedBehind));
+        datas = new ArrayList<>();
+        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
+        smart_refresh.setOnRefreshListener(this);
+        smart_refresh.setOnLoadMoreListener(this);
+        mAdapter = new RwLbAdapter(datas);
+        recyclerView.setAdapter(mAdapter);
+        mAdapter.notifyDataSetChanged();
+        // requestData(pageNo, pageSize, "", "");
+
+        mAdapter.setOnRecyclerViewListener(new BaseRecycleAdapter.OnRecyclerViewListener() {
+            @Override
+            public void onItemClick(int position) {
+                if (false) {
+                   /* RwEntity.DataBean.RecordsBean bean = datas.get(position);
+                    Intent intent = new Intent(getActivity(), AddJfActivity.class);
+                    intent.putExtra("rwxf", bean);
+                    startActivity(intent);*/
+                    return;
+                }
+                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
+                        .setTitle("温馨提示")
+                        .setMessage("是否签收本条任务?")
+                        .setPositiveButton("签收", new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialogInterface, int i) {
+                                // MapsInitializer.updatePrivacyAgree(getActivity(),true);
+                                RwEntity.DataBean.RecordsBean recordsBean = datas.get(position);
+                                String rwid = recordsBean.getRwid();
+                                String rwly = recordsBean.getRwly();
+                                String id = recordsBean.getId();
+                                Map<String, String> map = new HashMap<>();
+                                map.put("id", id);
+                                map.put("rwid", rwid);
+                                map.put("rwly", rwly);
+                                map.put("rwzt", "已签收");
+                                mPresenter.qs(map, recordsBean);
+
+                            }
+                        })
+                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialogInterface, int i) {
+                                // MapsInitializer.updatePrivacyAgree(getActivity().this,false);
+                            }
+                        });
+                AlertDialog dialog = builder.create();
+                dialog.show();
+
+                WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
+                params.width = ScreenUtils.dip2px(getActivity(), 320);
+
+                params.height = WindowManager.LayoutParams.WRAP_CONTENT;
+                dialog.getWindow().setAttributes(params);
+
+            }
+
+            @Override
+            public boolean onItemLongClick(int position) {
+                return false;
+            }
+        });
+    }
+
+    private void requestData(int pageNo, int pageSize) {
+
+        Map<String, String> map = new HashMap<>();
+        map.put("rwzt", "未签收");
+        map.put("current", pageNo + "");
+        map.put("size", pageSize + "");
+        mPresenter.getRwLb(map);
+
+    }
+    @Override
+    public void onResume() {
+        super.onResume();
+        smart_refresh.autoRefresh();
+    }
+
+    @Override
+    public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+
+        requestData(++pageNo, pageSize);
+
+    }
+
+    @Override
+    public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+
+        datas.clear();
+        mAdapter.notifyDataSetChanged();
+        requestData(pageNo = 1, pageSize);
+    }
+
+
+    /**
+     * 通过此方法可以使 Fragment 能够与外界做一些交互和通信, 比如说外部的 Activity 想让自己持有的某个 Fragment 对象执行一些方法,
+     * 建议在有多个需要与外界交互的方法时, 统一传 {@link Message}, 通过 what 字段来区分不同的方法, 在 {@link #setData(Object)}
+     * 方法中就可以 {@code switch} 做不同的操作, 这样就可以用统一的入口方法做多个不同的操作, 可以起到分发的作用
+     * <p>
+     * 调用此方法时请注意调用时 Fragment 的生命周期, 如果调用 {@link #setData(Object)} 方法时 {@link Fragment#onCreate(Bundle)} 还没执行
+     * 但在 {@link #setData(Object)} 里却调用了 Presenter 的方法, 是会报空的, 因为 Dagger 注入是在 {@link Fragment#onCreate(Bundle)} 方法中执行的
+     * 然后才创建的 Presenter, 如果要做一些初始化操作,可以不必让外部调用 {@link #setData(Object)}, 在 {@link #initData(Bundle)} 中初始化就可以了
+     * <p>
+     * Example usage:
+     * <pre>
+     * public void setData(@Nullable Object data) {
+     *     if (data != null && data instanceof Message) {
+     *         switch (((Message) data).what) {
+     *             case 0:
+     *                 loadData(((Message) data).arg1);
+     *                 break;
+     *             case 1:
+     *                 refreshUI();
+     *                 break;
+     *             default:
+     *                 //do something
+     *                 break;
+     *         }
+     *     }
+     * }
+     *
+     * // call setData(Object):
+     * Message data = new Message();
+     * data.what = 0;
+     * data.arg1 = 1;
+     * fragment.setData(data);
+     * </pre>
+     *
+     * @param data 当不需要参数时 {@code data} 可以为 {@code null}
+     */
+    @Override
+    public void setData(@Nullable Object data) {
+
+    }
+
+    @Override
+    public void showLoading() {
+
+    }
+
+    @Override
+    public void hideLoading() {
+
+    }
+
+    @Override
+    public void showMessage(@NonNull String message) {
+        checkNotNull(message);
+        ArmsUtils.snackbarText(message);
+    }
+
+    @Override
+    public void launchActivity(@NonNull Intent intent) {
+        checkNotNull(intent);
+        ArmsUtils.startActivity(intent);
+    }
+
+    @Override
+    public void killMyself() {
+
+    }
+    @Override
+    public void onSuccess(String result, int flag, RwEntity.DataBean.RecordsBean bean) {
+
+        JsonObject obj = new JsonParser().parse(result).getAsJsonObject();
+        System.out.println("lb==" + result);
+
+        try {
+            switch (flag) {
+                case 0:
+                    smart_refresh.finishLoadMore();
+                    smart_refresh.finishRefresh();
+
+                    if (obj.has("code")) {
+                        int code = obj.get("code").getAsInt();
+                        if (code == 200) {
+                            RwEntity kqBean = new Gson().fromJson(result, RwEntity.class);
+                            List<RwEntity.DataBean.RecordsBean> records = kqBean.getData().getRecords();
+                            if (records.size() > 0 && records != null) {
+                                datas.addAll(records);
+                                mAdapter.notifyDataSetChanged();
+
+                            } else {
+                                ToastUtils.show("没有更多数据了");
+                            }
+                        }
+                    }
+                    break;
+                case 1:
+
+                    if (obj.has("code")) {
+                        int code = obj.get("code").getAsInt();
+                        if (code == 200) {
+                            smart_refresh.autoRefresh();
+                            if (bean != null && "mdjf_dj".equals(bean.getRwly())) {
+                               /* Intent intent = new Intent(getActivity(), AddJfActivity.class);
+                                intent.putExtra("rwxf", bean);
+                                startActivity(intent);*/
+                            }
+                        } else {
+                            ToastUtils.show("签收失败");
+                        }
+                    }else {
+                        ToastUtils.show("签收失败");
+                    }
+                    break;
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 255 - 0
rwxffk/src/main/java/com/xwkj/rwxffk/mvp/ui/fragment/YqsRwFragment.java

@@ -0,0 +1,255 @@
+package com.xwkj.rwxffk.mvp.ui.fragment;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Message;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.base.BaseFragment;
+import com.jess.arms.di.component.AppComponent;
+import com.jess.arms.utils.ArmsUtils;
+
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+import com.scwang.smart.refresh.header.ClassicsHeader;
+import com.scwang.smart.refresh.layout.SmartRefreshLayout;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.constant.SpinnerStyle;
+import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener;
+import com.xwkj.rwxffk.di.component.DaggerYqsRwComponent;
+import com.xwkj.rwxffk.mvp.contract.YqsRwContract;
+import com.xwkj.rwxffk.mvp.model.entity.RwEntity;
+import com.xwkj.rwxffk.mvp.presenter.YqsRwPresenter;
+
+import com.xwkj.rwxffk.R;
+import com.xwkj.rwxffk.mvp.ui.adapter.BaseRecycleAdapter;
+import com.xwkj.rwxffk.mvp.ui.adapter.RwLbAdapterV2;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import butterknife.BindView;
+
+import static com.jess.arms.utils.Preconditions.checkNotNull;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 10/22/2024 16:07
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public class YqsRwFragment extends BaseFragment<YqsRwPresenter> implements YqsRwContract.View, OnRefreshLoadMoreListener {
+
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    @BindView(R.id.smart_refresh)
+    SmartRefreshLayout smart_refresh;
+    private List<RwEntity.DataBean.RecordsBean> datas;
+    private int pageNo = 1;
+    private int pageSize = 10;
+    private RwLbAdapterV2 mAdapter;
+
+
+    public static YqsRwFragment newInstance() {
+        YqsRwFragment fragment = new YqsRwFragment();
+        return fragment;
+    }
+
+    @Override
+    public void setupFragmentComponent(@NonNull AppComponent appComponent) {
+        DaggerYqsRwComponent //如找不到该类,请编译一下项目
+                .builder()
+                .appComponent(appComponent)
+                .view(this)
+                .build()
+                .inject(this);
+    }
+
+    @Override
+    public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.fragment_yqs_rw, container, false);
+    }
+
+    @Override
+    public void initData(@Nullable Bundle savedInstanceState) {
+        //设置 Header
+        smart_refresh.setRefreshHeader(new ClassicsHeader(getActivity()).setEnableLastTime(true));
+        //设置 Footer
+        smart_refresh.setRefreshFooter(new ClassicsFooter(getActivity()).setSpinnerStyle(SpinnerStyle.FixedBehind));
+        datas = new ArrayList<>();
+        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
+        smart_refresh.setOnRefreshListener(this);
+        smart_refresh.setOnLoadMoreListener(this);
+        mAdapter = new RwLbAdapterV2(datas);
+        mAdapter.setOnRecyclerViewListener(new BaseRecycleAdapter.OnRecyclerViewListener() {
+            @Override
+            public void onItemClick(int position) {
+                /*Intent intent = new Intent(getActivity(), AddJfActivity.class);
+                intent.putExtra("rwxf", datas.get(position));
+                startActivity(intent);*/
+            }
+
+            @Override
+            public boolean onItemLongClick(int position) {
+                return false;
+            }
+        });
+        recyclerView.setAdapter(mAdapter);
+        mAdapter.notifyDataSetChanged();
+        // requestData(pageNo, pageSize, "", "");
+
+
+    }
+
+    private void requestData(int pageNo, int pageSize) {
+
+        Map<String, String> map = new HashMap<>();
+
+        map.put("current", pageNo + "");
+        map.put("rwzt", "已签收");
+        map.put("size", pageSize + "");
+        mPresenter.getRwLb(map);
+
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (datas == null || mAdapter == null) return;
+        smart_refresh.autoRefresh();
+    }
+
+    @Override
+    public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+
+        requestData(++pageNo, pageSize);
+
+    }
+
+    @Override
+    public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+
+        datas.clear();
+        mAdapter.notifyDataSetChanged();
+        requestData(pageNo = 1, pageSize);
+    }
+
+    /**
+     * 通过此方法可以使 Fragment 能够与外界做一些交互和通信, 比如说外部的 Activity 想让自己持有的某个 Fragment 对象执行一些方法,
+     * 建议在有多个需要与外界交互的方法时, 统一传 {@link Message}, 通过 what 字段来区分不同的方法, 在 {@link #setData(Object)}
+     * 方法中就可以 {@code switch} 做不同的操作, 这样就可以用统一的入口方法做多个不同的操作, 可以起到分发的作用
+     * <p>
+     * 调用此方法时请注意调用时 Fragment 的生命周期, 如果调用 {@link #setData(Object)} 方法时 {@link Fragment#onCreate(Bundle)} 还没执行
+     * 但在 {@link #setData(Object)} 里却调用了 Presenter 的方法, 是会报空的, 因为 Dagger 注入是在 {@link Fragment#onCreate(Bundle)} 方法中执行的
+     * 然后才创建的 Presenter, 如果要做一些初始化操作,可以不必让外部调用 {@link #setData(Object)}, 在 {@link #initData(Bundle)} 中初始化就可以了
+     * <p>
+     * Example usage:
+     * <pre>
+     * public void setData(@Nullable Object data) {
+     *     if (data != null && data instanceof Message) {
+     *         switch (((Message) data).what) {
+     *             case 0:
+     *                 loadData(((Message) data).arg1);
+     *                 break;
+     *             case 1:
+     *                 refreshUI();
+     *                 break;
+     *             default:
+     *                 //do something
+     *                 break;
+     *         }
+     *     }
+     * }
+     *
+     * // call setData(Object):
+     * Message data = new Message();
+     * data.what = 0;
+     * data.arg1 = 1;
+     * fragment.setData(data);
+     * </pre>
+     *
+     * @param data 当不需要参数时 {@code data} 可以为 {@code null}
+     */
+    @Override
+    public void setData(@Nullable Object data) {
+
+    }
+
+    @Override
+    public void showLoading() {
+
+    }
+
+    @Override
+    public void hideLoading() {
+
+    }
+
+    @Override
+    public void showMessage(@NonNull String message) {
+        checkNotNull(message);
+        ArmsUtils.snackbarText(message);
+    }
+
+    @Override
+    public void launchActivity(@NonNull Intent intent) {
+        checkNotNull(intent);
+        ArmsUtils.startActivity(intent);
+    }
+
+    @Override
+    public void killMyself() {
+
+    }
+
+    @Override
+    public void onSuccess(String result) {
+
+        JsonObject obj = new JsonParser().parse(result).getAsJsonObject();
+        System.out.println("lb==" + result);
+
+        try {
+            smart_refresh.finishLoadMore();
+            smart_refresh.finishRefresh();
+
+            if (obj.has("code")) {
+                int code = obj.get("code").getAsInt();
+                if (code == 200) {
+                    RwEntity kqBean = new Gson().fromJson(result, RwEntity.class);
+                    List<RwEntity.DataBean.RecordsBean> records = kqBean.getData().getRecords();
+                    if (records.size() > 0 && records != null) {
+                        datas.addAll(records);
+                        mAdapter.notifyDataSetChanged();
+
+                    } else {
+                        ToastUtils.show("没有更多数据了");
+                    }
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 9 - 0
rwxffk/src/main/res/anim/translate_center_to_left.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="300">
+    <translate
+        android:fromXDelta="0%"
+        android:toXDelta="-100%" />
+
+
+</set>

+ 9 - 0
rwxffk/src/main/res/anim/translate_center_to_right.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="300">
+    <translate
+        android:fromXDelta="0%"
+        android:toXDelta="100%" />
+
+
+</set>

+ 9 - 0
rwxffk/src/main/res/anim/translate_left_to_center.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="300">
+    <translate
+        android:fromXDelta="-100%"
+        android:toXDelta="0%" />
+
+
+</set>

+ 9 - 0
rwxffk/src/main/res/anim/translate_right_to_center.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="300">
+    <translate
+        android:fromXDelta="100%"
+        android:toXDelta="0%" />
+
+
+</set>

BIN
rwxffk/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png


BIN
rwxffk/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png


BIN
rwxffk/src/main/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png


+ 9 - 0
rwxffk/src/main/res/drawable/bg_jq.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#ffffff" />
+    <corners android:topLeftRadius="0dp"
+        android:topRightRadius="0dp"
+        android:bottomRightRadius="5dp"
+        android:bottomLeftRadius="5dp"/>
+    <stroke android:width="1dp" android:color="#ffffff" />
+</shape>

+ 9 - 0
rwxffk/src/main/res/drawable/bg_jq_white.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#83BFF4" />
+    <corners android:topLeftRadius="10dp"
+        android:topRightRadius="10dp"
+        android:bottomRightRadius="5dp"
+        android:bottomLeftRadius="5dp"/>
+    <stroke android:width="1dp" android:color="#ffffff" />
+</shape>

+ 32 - 0
rwxffk/src/main/res/layout/activity_main.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+    <com.zkjc.common.view.CommonTitleBar
+        android:id="@+id/title_bar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="25dp" />
+
+    <com.google.android.material.tabs.TabLayout
+        android:id="@+id/tab_mdjf"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:layout_below="@id/title_bar"
+        android:paddingLeft="15dp"
+        app:tabIndicatorHeight="0dp"
+        app:tabMode="fixed"
+        app:tabSelectedTextColor="#15A6E8"
+        app:tabTextColor="@color/gray" />
+    <androidx.viewpager2.widget.ViewPager2
+        android:id="@+id/fl_kd"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@id/tab_mdjf" />
+
+</LinearLayout>

+ 24 - 0
rwxffk/src/main/res/layout/fragment_wqs_rw.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/smart_refresh"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@id/title_bar">
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="#ededed"
+            tools:listitem="@layout/item_rwlb" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+</LinearLayout>

+ 24 - 0
rwxffk/src/main/res/layout/fragment_yqs_rw.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/smart_refresh"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@id/title_bar">
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="#ededed"
+            tools:listitem="@layout/item_rwlb" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+</LinearLayout>

+ 35 - 0
rwxffk/src/main/res/layout/include_title.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/toolbar"
+    android:layout_width="match_parent"
+    android:layout_height="50dp"
+    android:background="?attr/colorPrimary"
+    app:contentInsetStart="0dp">
+
+    <RelativeLayout
+        android:id="@+id/toolbar_back"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:gravity="left">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:src="@drawable/ic_arrow_back_white_24dp" />
+    </RelativeLayout>
+
+    <TextView
+        android:id="@+id/toolbar_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:textColor="@color/white"
+        android:textSize="18sp"
+        tools:text="@string/app_name" />
+
+</android.support.v7.widget.Toolbar>

+ 178 - 0
rwxffk/src/main/res/layout/item_rwlb.xml

@@ -0,0 +1,178 @@
+<?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="wrap_content"
+    android:layout_marginTop="10dp">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="15dp"
+        android:layout_marginRight="15dp"
+        android:background="@drawable/bg_jq_white">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:background="@drawable/bg_jq">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="3"
+                    android:orientation="vertical">
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="15dp"
+                            android:text="任务名称 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/rwmc"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="15dp"
+                            android:text="南城酒家打架南城酒家打架南城酒家打架"
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="5dp"
+                            android:text="任务类型 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/rwlx"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="5dp"
+                            android:text="家庭纠纷"
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="5dp"
+                            android:text="指&#12288;&#12288;令 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/zl"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="5dp"
+                            android:text=""
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="5dp"
+                            android:text="备&#12288;&#12288;注 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/bz"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="5dp"
+                            android:text=""
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/dp_10"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="5dp"
+                            android:text="下发时间 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/xfsj"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="5dp"
+                            android:text="2023-12-15 12:30:80"
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                </LinearLayout>
+
+                <RelativeLayout
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1">
+
+                    <Button
+                        android:id="@+id/bt_qs"
+                        android:layout_width="match_parent"
+                        android:layout_height="35dp"
+                        android:layout_centerInParent="true"
+                        android:layout_marginLeft="@dimen/dp_10"
+                        android:layout_marginRight="10dp"
+                        android:background="#03A9F4"
+                        android:text="签收"
+                        android:textColor="@color/white" />
+                </RelativeLayout>
+            </LinearLayout>
+
+        </RelativeLayout>
+
+
+    </RelativeLayout>
+</RelativeLayout>

+ 173 - 0
rwxffk/src/main/res/layout/item_rwlb2.xml

@@ -0,0 +1,173 @@
+<?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="wrap_content"
+    android:layout_marginTop="10dp">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="15dp"
+        android:layout_marginRight="15dp"
+        android:background="@drawable/bg_jq_white">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:background="@drawable/bg_jq">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="3"
+                    android:orientation="vertical">
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="15dp"
+                            android:text="任务名称 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/rwmc"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="15dp"
+                            android:text="南城酒家打架南城酒家打架南城酒家打架"
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="5dp"
+                            android:text="任务类型 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/rwlx"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="5dp"
+                            android:text="家庭纠纷"
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="5dp"
+                            android:text="指&#12288;&#12288;令 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/zl"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="5dp"
+                            android:text=""
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="5dp"
+                            android:text="备&#12288;&#12288;注 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/bz"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="5dp"
+                            android:text=""
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/dp_10"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="10dp"
+                            android:layout_marginTop="5dp"
+                            android:text="签收时间 :"
+                            android:textColor="#000"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:id="@+id/xfsj"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginTop="5dp"
+                            android:text="2023-12-15 12:30:80"
+                            android:textColor="#0A60A5"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                </LinearLayout>
+
+                <Button
+                    android:id="@+id/bt_qs"
+                    android:layout_width="0dp"
+                    android:layout_height="35dp"
+                    android:layout_weight="1"
+                    android:layout_gravity="center_vertical"
+                    android:layout_marginLeft="@dimen/dp_10"
+                    android:layout_marginRight="10dp"
+                    android:background="#03A9F4"
+                    android:text="登记矛盾"
+                    android:textColor="@color/white" />
+
+            </LinearLayout>
+
+        </RelativeLayout>
+
+    </RelativeLayout>
+</RelativeLayout>

BIN
rwxffk/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
rwxffk/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
rwxffk/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
rwxffk/src/main/res/mipmap-xxxhdpi/ic_launcher.png


+ 8 - 0
rwxffk/src/main/res/values/colors.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="colorPrimary">#3FA862</color>
+    <color name="colorPrimaryDark">#3FA862</color>
+    <color name="colorAccent">#FF4081</color>
+    <color name="white">#FFFFFF</color>
+    <color name="gray">#8A8686</color>
+</resources>

+ 3 - 0
rwxffk/src/main/res/values/dimens.xml

@@ -0,0 +1,3 @@
+<resources>
+
+</resources>

+ 3 - 0
rwxffk/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<resources>
+   <!-- <string name="app_name">rwxffk</string>-->
+</resources>

+ 17 - 0
rwxffk/src/main/res/values/styles.xml

@@ -0,0 +1,17 @@
+<resources>
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
+        <!-- Customize your theme here. -->
+        <item name="colorPrimary">@color/colorPrimary</item>
+        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+        <item name="colorAccent">@color/colorAccent</item>
+        <item name="android:windowAnimationStyle">@style/Animation_Activity</item>
+    </style>
+
+    <style name="Animation_Activity">
+        <item name="android:activityOpenEnterAnimation">@anim/translate_right_to_center</item>
+        <item name="android:activityOpenExitAnimation">@anim/translate_center_to_left</item>
+        <item name="android:activityCloseEnterAnimation">@anim/translate_left_to_center</item>
+        <item name="android:activityCloseExitAnimation">@anim/translate_center_to_right</item>
+    </style>
+</resources>

+ 4 - 0
rwxffk/src/main/res/xml/file_paths.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<paths xmlns:android="http://schemas.android.com/apk/res/android">
+    <root-path name="root_path" path="."/>
+</paths>

+ 4 - 0
rwxffk/src/main/res/xml/network_security_config.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<network-security-config>
+    <base-config cleartextTrafficPermitted="true" />
+</network-security-config>

+ 17 - 0
rwxffk/src/test/java/com/xwkj/rwxffk/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package com.xwkj.rwxffk;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() {
+        assertEquals(4, 2 + 2);
+    }
+}

+ 1 - 0
settings.gradle

@@ -7,3 +7,4 @@ include ':wgrhc'
 include ':ocr_ui'
 include ':camera'
 include ':rhzf'
+include ':rwxffk'