瀏覽代碼

风险管理8月7日提交代码-liu.bolan-云融大宗

Liu.bolan 4 年之前
父節點
當前提交
dfe219f699
共有 45 個文件被更改,包括 5925 次插入3069 次删除
  1. 16 5
      RMA/app/build.gradle
  2. 2 0
      RMA/app/src/main/AndroidManifest.xml
  3. 2951 2959
      RMA/app/src/main/assets/errormessage.json
  4. 83 2
      RMA/app/src/main/java/cn/muchinfo/rma/business/financial/FinancialManager.kt
  5. 98 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/StringUtils.kt
  6. 38 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/WrFactorTypeInfoExData.kt
  7. 260 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/WrFinanceBuyApplyData.kt
  8. 236 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/WrScfContractData.kt
  9. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/dialog/Dialog.kt
  10. 6 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  11. 53 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/FinanceContentVIewHolder.kt
  12. 424 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/FinanceManagementActivity.kt
  13. 303 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/FinanceManagementDetailsActivity.kt
  14. 205 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/FinanceManagementViewModel.kt
  15. 200 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/adapter/FinanceApplicationContentAdapter.java
  16. 206 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/adapter/FinanceContractContentAdapter.java
  17. 163 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/PerformanceDetailsActivity.kt
  18. 223 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/PerformanceDetailsViewHolder.kt
  19. 6 6
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/PerformanceInformationActivity.kt
  20. 19 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/PerformanceInformationViewModel.kt
  21. 5 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/adapter/PerformanceInformationContentAdapter.java
  22. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/spotwarehouse/SpotWareHouseViewModel.kt
  23. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/spotwarehouse/adapter/DetailsWarehouseContentAdapter.java
  24. 95 51
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/spotwarehouse/listed/ListedActivity.kt
  25. 20 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/spotwarehouse/listed/ListedViewModel.kt
  26. 3 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerViewModel.kt
  27. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/FutureAccountViewModel.kt
  28. 2 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractViewModel.kt
  29. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanViewModel.kt
  30. 5 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/ReportQueryViewModel.kt
  31. 9 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/JsonBean.java
  32. 37 26
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/BusinessHallActivity.kt
  33. 5 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/FloatListedDialog.kt
  34. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/OneListedDialog.kt
  35. 16 0
      RMA/app/src/main/res/drawable/performance_blue_circle.xml
  36. 19 0
      RMA/app/src/main/res/drawable/performance_future_white_circle.xml
  37. 9 0
      RMA/app/src/main/res/drawable/performance_select_bg.xml
  38. 7 0
      RMA/app/src/main/res/drawable/performance_title_future_bg.xml
  39. 7 0
      RMA/app/src/main/res/drawable/performance_title_now_bg.xml
  40. 7 0
      RMA/app/src/main/res/drawable/performance_title_used_bg.xml
  41. 6 0
      RMA/app/src/main/res/drawable/performance_white_bg.xml
  42. 19 0
      RMA/app/src/main/res/drawable/performance_white_circle.xml
  43. 152 0
      RMA/app/src/main/res/layout/finance_layout_item_content.xml
  44. 二進制
      RMA/app/src/main/res/mipmap-xhdpi/hnst_performance.png
  45. 二進制
      RMA/app/src/main/res/mipmap-xhdpi/yrdz_finance_bg.png

+ 16 - 5
RMA/app/build.gradle

@@ -19,8 +19,8 @@ android {
         applicationId "cn.muchinfo.rma"
         minSdkVersion 24
         targetSdkVersion 30
-        versionCode 50014
-        versionName "5.0.14"
+        versionCode 50018
+        versionName "5.0.18"
         multiDexEnabled true
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         //指定room.schemaLocation生成的文件路径
@@ -77,6 +77,17 @@ android {
     packagingOptions {
         exclude 'META-INF/metadata.kotlin_module'
         exclude 'META-INF/metadata.jvm.kotlin_module'
+        exclude 'META-INF/DEPENDENCIES'
+        exclude 'META-INF/DEPENDENCIES.txt'
+        exclude 'META-INF/LICENSE'
+        exclude 'META-INF/LICENSE.txt'
+        exclude 'META-INF/license.txt'
+        exclude 'META-INF/NOTICE'
+        exclude 'META-INF/NOTICE.txt'
+        exclude 'META-INF/notice.txt'
+        exclude 'META-INF/INDEX.LIST'
+        exclude 'META-INF/versions'
+        exclude 'META-INF/versions/**/*.class'
     }
 
     compileOptions {
@@ -191,12 +202,12 @@ dependencies {
     implementation 'com.github.AAChartModel:AAChartCore-Kotlin:-SNAPSHOT'
     implementation 'q.rorbin:badgeview:1.1.3'
     api 'com.luozm.captcha:captcha:1.1.2'
-    compile 'com.sunfusheng:marqueeview:1.3.3'
+    implementation 'com.sunfusheng:marqueeview:1.3.3'
     implementation 'com.google.zxing:core:3.3.0'
 
-    compile 'com.cuieney:rxpay-api:2.2.3'
+    implementation 'com.cuieney:rxpay-api:2.2.3'
     kapt 'com.cuieney:rxpay-compiler:2.1.1'
-    compile 'com.github.iwgang:countdownview:2.1.6'//倒计时
+    implementation 'com.github.iwgang:countdownview:2.1.6'//倒计时
 
 //    implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
 //    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

+ 2 - 0
RMA/app/src/main/AndroidManifest.xml

@@ -396,6 +396,8 @@
 
         <activity android:name=".view.base.hnstmain.performance.PerformanceDelayActivity"/>
 
+        <activity android:name=".view.base.hnstmain.performance.PerformanceDetailsActivity"/>
+
     </application>
 
 </manifest>

文件差異過大導致無法顯示
+ 2951 - 2959
RMA/app/src/main/assets/errormessage.json


+ 83 - 2
RMA/app/src/main/java/cn/muchinfo/rma/business/financial/FinancialManager.kt

@@ -1,7 +1,6 @@
 package cn.muchinfo.rma.business.financial
 
-import cn.muchinfo.rma.global.data.BusinessData
-import cn.muchinfo.rma.global.data.FinancialManageData
+import cn.muchinfo.rma.global.data.*
 import cn.muchinfo.rma.netManage.base.ResponseCallback
 import cn.muchinfo.rma.netManage.utils.MyOkHttpUtils
 import cn.muchinfo.rma.view.base.app.BaseResult
@@ -16,6 +15,88 @@ import java.lang.Exception
 class FinancialManager {
 
     /**
+     * 查询仓单贸易融资合同
+     * @param params Map<String, String>
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<FinancialManageData>?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryWrScfContract(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<WrScfContractData>?, error: Error?) -> Unit
+    ) {
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/WrTrade2/QueryWrScfContract",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<WrScfContractData>>>() {
+                override fun onResponse(response: BaseResult<List<WrScfContractData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+
+            }
+        )
+    }
+
+    /**
+     * 查询仓单要素详细信息列表项
+     * @param params Map<String, String>
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<FinancialManageData>?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryWrFactorTypeInfoEx(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<WrFactorTypeInfoExData>?, error: Error?) -> Unit
+    ) {
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/WrTrade2/QueryWrFactorTypeInfoEx",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<WrFactorTypeInfoExData>>>() {
+                override fun onResponse(response: BaseResult<List<WrFactorTypeInfoExData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+
+            }
+        )
+    }
+
+
+    /**
+     * 查询融资购买申请
+     * @param params Map<String, String>
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<FinancialManageData>?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryWrFinanceBuyApply(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<WrFinanceBuyApplyData>?, error: Error?) -> Unit
+    ) {
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/WrTrade2/QueryWrFinanceBuyApply",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<WrFinanceBuyApplyData>>>() {
+                override fun onResponse(response: BaseResult<List<WrFinanceBuyApplyData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+
+            }
+        )
+    }
+
+    /**
      * 查询财务管理款项列表
      * @param params Map<String, String>
      * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<FinancialManageData>?, [@kotlin.ParameterName] Error?, Unit>

+ 98 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/StringUtils.kt

@@ -305,6 +305,44 @@ fun String.inventoryapplystatus() : String{
 }
 
 /**
+ * 融资管理申请单状态
+ */
+fun String.applystatus() : String{
+    if (this.isNullOrEmpty()){
+        return "--"
+    }
+    var str = ""
+    when {
+        this == "1" -> {
+            str = "待审核"
+        }
+        this == "2" -> {
+            str = "审核中"
+        }
+        this == "3" -> {
+            str = "审核通过"
+        }
+        this == "4" -> {
+            str = "审核拒绝"
+        }
+        this == "5" -> {
+            str = "审核失败"
+        }
+        this == "6" -> {
+            str = "已撤销"
+        }
+        this == "7" -> {
+            str = "自动审核"
+        }
+        this == "8" -> {
+            str = "融资失败"
+        }
+    }
+    return str
+}
+
+
+/**
  * 仓库状态 //仓库状态 - 1:正常 2:注销 3:待审核 4:审核拒绝
  */
 fun String.warehousestatus() : String{
@@ -476,4 +514,64 @@ fun String.currencyid() : String{
     return str
 }
 
+/**
+ * 履约步骤id名称
+ * @receiver String
+ * @return String
+ */
+fun String.steptypeid() : String{
+    if (this.isNullOrEmpty()){
+        return "--"
+    }
+    var str = ""
+    when {
+        this == "1" -> {
+            str = "买方支付"
+        }
+        this == "2" -> {
+            str = "卖方收款"
+        }
+        this == "3" -> {
+            str = "买方自提"
+        }
+        this == "4" -> {
+            str = "卖方发货"
+        }
+        this == "5" -> {
+            str = "买方确认货"
+        }
+        this == "6" -> {
+            str = "卖方发票"
+        }
+        this == "7" -> {
+            str = "买方确认票"
+        }
+        this == "8" -> {
+            str = "仓单转移"
+        }
+        this == "9" -> {
+            str = "释放卖方冻结"
+        }
+        this == "10" -> {
+            str = "货款溢短"
+        }
+        this == "11" -> {
+            str = "生成合同"
+        }
+        this == "12" -> {
+            str = "运费"
+        }
+        this == "90" -> {
+            str = "确认支付"
+        }
+        this == "91" -> {
+            str = "确认放行"
+        }
+        this == "92" -> {
+            str = "买方支付"
+        }
+    }
+    return str
+}
+
 

+ 38 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/data/WrFactorTypeInfoExData.kt

@@ -0,0 +1,38 @@
+package cn.muchinfo.rma.global.data
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+
+data class WrFactorTypeInfoExData(
+    @SerializedName("name")
+    val name: String? = "",
+    @SerializedName("value")
+    val value: String? = ""
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(name)
+        parcel.writeString(value)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<WrFactorTypeInfoExData> {
+        override fun createFromParcel(parcel: Parcel): WrFactorTypeInfoExData {
+            return WrFactorTypeInfoExData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<WrFactorTypeInfoExData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

+ 260 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/data/WrFinanceBuyApplyData.kt

@@ -0,0 +1,260 @@
+package cn.muchinfo.rma.global.data
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+
+/**
+ * 融资购买申请单
+ */
+data class WrFinanceBuyApplyData(
+    @SerializedName("applydate")
+    val applydate : String? = "",//申请时间
+    @SerializedName("applystatus")
+    val applystatus : String? = "",//申请状态 - 1:待审核 2.审核中 3:审核通过 4:审核拒绝 5:审核失败 6:已撤销 7:自动审核 8:融资失败
+    @SerializedName("applyuserid")
+    val applyuserid : String? = "",//申请人
+    @SerializedName("auditdate")
+    val auditdate : String? = "",//审核时间
+    @SerializedName("auditremark")
+    val auditremark : String? = "",//审核备注
+    @SerializedName("audituserid")
+    val audituserid : String? = "",//审核人
+    @SerializedName("buyaccountid")
+    val buyaccountid : String? = "",//买方资金账号
+    @SerializedName("buyorsell")
+    val buyorsell : String? = "",//买卖 - 0:买 1:卖
+    @SerializedName("buyuserid")
+    val buyuserid : String? = "",//买方用户ID
+    @SerializedName("buyusername")
+    val buyusername : String? = "",//买方名称
+    @SerializedName("buywrtradeorderid")
+    val buywrtradeorderid : String? = "",//融资方买委托单ID
+    @SerializedName("deliverygoodscode")
+    val deliverygoodscode : String? = "",//品种代码
+    @SerializedName("deliverygoodsid")
+    val deliverygoodsid : String? = "",//品种ID
+    @SerializedName("deliverygoodsname")
+    val deliverygoodsname:  String? = "",//品种名称
+    @SerializedName("deliverymonth")
+    val deliverymonth: String? = "",//交收月(yyyy-MM) [无仓单HasWR =0]
+    @SerializedName("enumdicname")
+    val enumdicname:  String? = "",//单位名称
+    @SerializedName("financeaccountid")
+    val financeaccountid:  String? = "",//融资方资金帐户ID
+    @SerializedName("financeapplyid")
+    val financeapplyid: String? = "",//融资申请单ID(320+Unix秒时间戳(10位)+xxxxxx)
+    @SerializedName("financeareauserid")
+    val financeareauserid : String? = "",//融资方用户ID
+    @SerializedName("financename")
+    val financename: String? = "",//融出方名称
+    @SerializedName("financetype")
+    val financetype : String? = "",//融资类型 1-融资回购
+    @SerializedName("financingdays")
+    val financingdays: String? = "",//天数(天)
+    @SerializedName("freezebuymargin")
+    val freezebuymargin: String? = "",//冻结融资保证金(买方)
+    @SerializedName("handleremark")
+    val handleremark : String? = "",//处理备注
+    @SerializedName("handlestatus")
+    val handlestatus : String? = "",//处理状态
+    @SerializedName("interestminlen")
+    val interestminlen : String? = "",//最小起息天数
+    @SerializedName("interestrate")
+    val interestrate : String? = "",//利率
+    @SerializedName("interestratemode")
+    val interestratemode: String? = "",//利率方式 - 1:年利率 2:日利率 3:日固定值
+    @SerializedName("interestsettlemode")
+    val interestsettlemode: String? = "",//结息方式 - 1:按日结息 3:按月结息
+    @SerializedName("interestsettlevalue")
+    val interestsettlevalue : String? = "",//结息方式值
+    @SerializedName("isautoloan")
+    val isautoloan: String? = "",//是否自动放款 - 0:手动 1:自动
+    @SerializedName("marginratio")
+    val marginratio : String? = "",//保证金比率质押率 - [仓单质押]
+    @SerializedName("marketid")
+    val marketid:  String? = "",//市场ID
+    @SerializedName("minivalue")
+    val minivalue: String? = "",//现货商品最小变动值
+    @SerializedName("optioncompare")
+    val optioncompare: String? = "",//选择项比较串【{选择项ID}+{冒号}+选择项值 } ,逗号分隔,头尾加逗号】-- 所有选择项拼接,用于比较
+    @SerializedName("orderqty")
+    val orderqty: String? = "",//委托数量(商品数量)
+    @SerializedName("productdetailid")
+    val productdetailid: String? = "",//产品组合ID
+    @SerializedName("productid")
+    val productid: String? = "",//金融产品ID
+    @SerializedName("productname")
+    val productname: String? = "",//产品名称
+    @SerializedName("remark")
+    val remark:  String? = "",//备注
+    @SerializedName("scfcontractid")
+    val scfcontractid: String? = "",//仓单回购合同ID
+    @SerializedName("sellaccountid")
+    val sellaccountid: String? = "",//卖方资金账号
+    @SerializedName("selluserid")
+    val selluserid: String? = "",//卖方用户ID
+    @SerializedName("sellwrtradeorderid")
+    val sellwrtradeorderid: String? = "",//卖方委托单ID
+    @SerializedName("tradeamount")
+    val tradeamount :String? = "",//成交金额(借款金额)
+    @SerializedName("tradedate")
+    val tradedate : String? = "",//交易日(yyyyMMdd)
+    @SerializedName("tradeprice")
+    val tradeprice : String? = "",//成交价格
+    @SerializedName("warehouseid")
+    val warehouseid: String? = "",//仓库ID
+    @SerializedName("warehousename")
+    val warehousename: String? = "",//仓库名称
+    @SerializedName("wrfactortypeid")
+    val wrfactortypeid : String? = "",//仓单要素类型ID(212+Unix秒时间戳(10位)+xxxxxx)
+    @SerializedName("wrfactortypename")
+    val wrfactortypename: String? = "",//仓单要素类型名称(选择项要素的名称合并显示,逗号分隔)
+    @SerializedName("wrpricetype")
+    val wrpricetype: String? = "",//价格方式 - 1:固定价 2-浮动价 - [挂牌单]
+    @SerializedName("wrstandardcode")
+    val wrstandardcode : String? = "",//现货商品代码
+    @SerializedName("wrstandardid")
+    val wrstandardid: String? = "",//现货商品ID
+    @SerializedName("wrstandardname")
+    val wrstandardname: String? = "",//商品名称
+    @SerializedName("wrtypename")
+    val wrtypename: String? = "",//商品
+    var rightData : List<String?>? = arrayListOf()//组装的右侧数据
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.createStringArrayList()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(applydate)
+        parcel.writeString(applystatus)
+        parcel.writeString(applyuserid)
+        parcel.writeString(auditdate)
+        parcel.writeString(auditremark)
+        parcel.writeString(audituserid)
+        parcel.writeString(buyaccountid)
+        parcel.writeString(buyorsell)
+        parcel.writeString(buyuserid)
+        parcel.writeString(buyusername)
+        parcel.writeString(buywrtradeorderid)
+        parcel.writeString(deliverygoodscode)
+        parcel.writeString(deliverygoodsid)
+        parcel.writeString(deliverygoodsname)
+        parcel.writeString(deliverymonth)
+        parcel.writeString(enumdicname)
+        parcel.writeString(financeaccountid)
+        parcel.writeString(financeapplyid)
+        parcel.writeString(financeareauserid)
+        parcel.writeString(financename)
+        parcel.writeString(financetype)
+        parcel.writeString(financingdays)
+        parcel.writeString(freezebuymargin)
+        parcel.writeString(handleremark)
+        parcel.writeString(handlestatus)
+        parcel.writeString(interestminlen)
+        parcel.writeString(interestrate)
+        parcel.writeString(interestratemode)
+        parcel.writeString(interestsettlemode)
+        parcel.writeString(interestsettlevalue)
+        parcel.writeString(isautoloan)
+        parcel.writeString(marginratio)
+        parcel.writeString(marketid)
+        parcel.writeString(minivalue)
+        parcel.writeString(optioncompare)
+        parcel.writeString(orderqty)
+        parcel.writeString(productdetailid)
+        parcel.writeString(productid)
+        parcel.writeString(productname)
+        parcel.writeString(remark)
+        parcel.writeString(scfcontractid)
+        parcel.writeString(sellaccountid)
+        parcel.writeString(selluserid)
+        parcel.writeString(sellwrtradeorderid)
+        parcel.writeString(tradeamount)
+        parcel.writeString(tradedate)
+        parcel.writeString(tradeprice)
+        parcel.writeString(warehouseid)
+        parcel.writeString(warehousename)
+        parcel.writeString(wrfactortypeid)
+        parcel.writeString(wrfactortypename)
+        parcel.writeString(wrpricetype)
+        parcel.writeString(wrstandardcode)
+        parcel.writeString(wrstandardid)
+        parcel.writeString(wrstandardname)
+        parcel.writeString(wrtypename)
+        parcel.writeStringList(rightData)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<WrFinanceBuyApplyData> {
+        override fun createFromParcel(parcel: Parcel): WrFinanceBuyApplyData {
+            return WrFinanceBuyApplyData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<WrFinanceBuyApplyData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

+ 236 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/data/WrScfContractData.kt

@@ -0,0 +1,236 @@
+package cn.muchinfo.rma.global.data
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+
+/**
+ * 仓单贸易融资合同
+ */
+data class WrScfContractData(
+    @SerializedName("borroweruserid")
+    val borroweruserid: String? = "",//借款用户ID
+    @SerializedName("buybackwrpositionqty")
+    val buybackwrpositionqty: String? = "",//已回购仓单头寸数量 - [仓单回购\仓单质押] -> 已回购数量
+    @SerializedName("closeinterest")
+    val closeinterest: String? = "",//已结利息 -> 已结费用
+    @SerializedName("currisklevel")
+    val currisklevel: String? = "",//风险级别 - 1:正常 2:追加货款 3:支付尾款
+    @SerializedName("deadline")
+    val deadline: String? = "",//截止日期(yyyyMMdd) -> 借款到期时间
+    @SerializedName("deliverygoodscode")
+    val deliverygoodscode : String? = "",//品种代码
+    @SerializedName("deliverygoodsid")
+    val deliverygoodsid: String? = "",//品种ID
+    @SerializedName("deliverygoodsname")
+    val deliverygoodsname : String? = "",//品种名称
+    @SerializedName("enumdicname")
+    val enumdicname: String? = "",//单位名称
+    @SerializedName("financingdays")
+    val financingdays: String? = "",//天数(天)
+    @SerializedName("initmargin")
+    val initmargin : String? = "",//保证金 - [仓单回购]
+    @SerializedName("interestamount")
+    val interestamount: String? = "",//计息金额=合同剩余金额 - 初始保证金 - 追缴保证金 \ 合同剩余金额
+    @SerializedName("interestdebt")
+    val interestdebt : String? = "",//利息欠款(记录负数) -> 费用欠款
+    @SerializedName("interestminlen")
+    val interestminlen :String? = "",//最小起息天数
+    @SerializedName("interestrate")
+    val interestrate: String? = "",//利率
+    @SerializedName("interestratemode")
+    val interestratemode: String? = "",//利率方式 - 1:年利率 2:日利率 3:日固定值
+    @SerializedName("interestsettlemode")
+    val interestsettlemode : String? = "",//结息方式 - 1:按日结息 3:按月结息
+    @SerializedName("interestsettlevalue")
+    val interestsettlevalue: String? = "",//结息方式值
+    @SerializedName("isautoloan")
+    val isautoloan : String? = "",//是否自动放款 - 0:手动 1:自动 - [仓单质押]
+    @SerializedName("lastcloseinterestday")
+    val lastcloseinterestday : String? = "",//最近结息日(yyyyMMdd)
+    @SerializedName("lenderamount")
+    val lenderamount : String? = "",//贷款金额 -> 借款金额
+    @SerializedName("lenderuserid")
+    val lenderuserid :String? = "",//贷款方用户ID -> 融出方用户ID
+    @SerializedName("lenderusername")
+    val lenderusername : String? = "",//融出方
+    @SerializedName("marginratio")
+    val marginratio: String? = "",//保证金比率质押率 - [仓单质押]
+    @SerializedName("marketid")
+    val marketid: String? = "",//市场ID - 拆成三个独立模式后,根据市场ID处理
+    @SerializedName("minivalue")
+    val minivalue: String? = "",//现货商品最小变动值
+    @SerializedName("optioncompare")
+    val optioncompare: String? = "",//选择项比较串【{选择项ID}+{冒号}+选择项值 } ,逗号分隔,头尾加逗号】-- 所有选择项拼接,用于比较
+    @SerializedName("pricemove")
+    val pricemove : String? = "",//估值升贴水值
+    @SerializedName("productdetailid")
+    val productdetailid :String? = "",//产品组合ID
+    @SerializedName("productid")
+    val productid: String? = "",//金融产品ID
+    @SerializedName("productname")
+    val productname :String? = "",//产品名称
+    @SerializedName("remainamount")
+    val remainamount :String? = "",//合同剩余金额 -> 剩余金额
+    @SerializedName("remainwrpositionqty")
+    val remainwrpositionqty: String? = "",//剩余仓单头寸数量 - [仓单回购\仓单质押] -> 剩余数量
+    @SerializedName("remark")
+    val remark : String? = "",//备注
+    @SerializedName("scfcontractid")
+    val scfcontractid : String? = "",//SCF合同ID(310+Unix秒时间戳(10位)+xxxxxx)
+    @SerializedName("scfcontractstatus")
+    val scfcontractstatus :String? = "",//合同状态 - 1:待确认 2:已确认 3:确认拒绝 4:已支付保证金 5:已激活 6:已违约 7:到期结束 8:延期结束 9:违约结束 10:已注销 11:已关闭 99:未提交
+    @SerializedName("scfcontracttype")
+    val scfcontracttype: String? = "",//合同类型 - 1:仓单回购 2:仓单质押 3:合作套保 4:资金贷款 5:融资单 6:融资回购
+    @SerializedName("startinterestday")
+    val startinterestday: String? = "",//计息开始日(yyyyMMdd) -> 开始计费日期
+    @SerializedName("totalinterest")
+    val totalinterest: String? = "",//已计利息 -> 已计费用
+    @SerializedName("unpaidinterest")
+    val unpaidinterest: String? = "",//未结费用
+    @SerializedName("updatetime")
+    val updatetime : String? = "",//更新时间
+    @SerializedName("warehouseid")
+    val warehouseid: String? = "",//仓库ID
+    @SerializedName("warehousename")
+    val warehousename : String? = "",//仓库名称
+    @SerializedName("wrfactortypeid")
+    val wrfactortypeid: String? = "",//仓单要素类型ID(212+Unix秒时间戳(10位)+xxxxxx)
+    @SerializedName("wrfactortypename")
+    val wrfactortypename: String? = "",//仓单要素类型名称(选择项要素的名称合并显示,逗号分隔)
+    @SerializedName("wrqty")
+    val wrqty: String? = "",//仓单数量 - [仓单回购\仓单质押] -> 数量
+    @SerializedName("wrstandardcode")
+    val wrstandardcode : String? = "",//现货商品代码
+    @SerializedName("wrstandardid")
+    val wrstandardid : String? = "",//现货商品ID
+    @SerializedName("wrstandardname")
+    val wrstandardname : String? = "",//商品名称
+    @SerializedName("wrtypename")
+    val wrtypename : String? = "",//商品
+    var rightData : List<String?>? = arrayListOf()//组装的右侧数据
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.createStringArrayList()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(borroweruserid)
+        parcel.writeString(buybackwrpositionqty)
+        parcel.writeString(closeinterest)
+        parcel.writeString(currisklevel)
+        parcel.writeString(deadline)
+        parcel.writeString(deliverygoodscode)
+        parcel.writeString(deliverygoodsid)
+        parcel.writeString(deliverygoodsname)
+        parcel.writeString(enumdicname)
+        parcel.writeString(financingdays)
+        parcel.writeString(initmargin)
+        parcel.writeString(interestamount)
+        parcel.writeString(interestdebt)
+        parcel.writeString(interestminlen)
+        parcel.writeString(interestrate)
+        parcel.writeString(interestratemode)
+        parcel.writeString(interestsettlemode)
+        parcel.writeString(interestsettlevalue)
+        parcel.writeString(isautoloan)
+        parcel.writeString(lastcloseinterestday)
+        parcel.writeString(lenderamount)
+        parcel.writeString(lenderuserid)
+        parcel.writeString(lenderusername)
+        parcel.writeString(marginratio)
+        parcel.writeString(marketid)
+        parcel.writeString(minivalue)
+        parcel.writeString(optioncompare)
+        parcel.writeString(pricemove)
+        parcel.writeString(productdetailid)
+        parcel.writeString(productid)
+        parcel.writeString(productname)
+        parcel.writeString(remainamount)
+        parcel.writeString(remainwrpositionqty)
+        parcel.writeString(remark)
+        parcel.writeString(scfcontractid)
+        parcel.writeString(scfcontractstatus)
+        parcel.writeString(scfcontracttype)
+        parcel.writeString(startinterestday)
+        parcel.writeString(totalinterest)
+        parcel.writeString(unpaidinterest)
+        parcel.writeString(updatetime)
+        parcel.writeString(warehouseid)
+        parcel.writeString(warehousename)
+        parcel.writeString(wrfactortypeid)
+        parcel.writeString(wrfactortypename)
+        parcel.writeString(wrqty)
+        parcel.writeString(wrstandardcode)
+        parcel.writeString(wrstandardid)
+        parcel.writeString(wrstandardname)
+        parcel.writeString(wrtypename)
+        parcel.writeStringList(rightData)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<WrScfContractData> {
+        override fun createFromParcel(parcel: Parcel): WrScfContractData {
+            return WrScfContractData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<WrScfContractData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/dialog/Dialog.kt

@@ -288,7 +288,7 @@ fun AppCompatActivity.creatHnstSpotDetailSheetDialog(
         .setTitle(titleStr)
         .setAddCancelBtn(true)
     selectList.forEach {
-        builder.addItem(it.ladingbillid.toString() + "(" + it.enableqty + it.enumdicname + ")")
+        builder.addItem(it.wrfactortypeid.toString() + "(" + it.enableqty + it.enumdicname + ")")
     }
     builder.setOnSheetItemClickListener { dialog, itemView, position, tag ->
         select?.invoke(selectList.get(position))

+ 6 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt

@@ -10,7 +10,7 @@ object Constant {
 //    const val baseurl = "http://103.40.249.123:8280/cfg?key=mtp_20"//千海金外盘
 //    const val baseurl = "http://103.40.249.127:28280/cfg?key=mtp_20"
 //    const val baseurl = "http://192.168.30.125:8080/cfg?key=test_125"
-    const val baseurl = "http://192.168.31.114:8080/cfg?key=test_114" // 企业风管 123123
+//    const val baseurl = "http://192.168.31.114:8080/cfg?key=test_114" // 企业风管 123123
 //        const val baseurl = "http://192.168.30.125:8080/cfg?key=test_125"//李倩千海金 18611112222
 //    const val baseurl = "http://192.168.31.220:8080/cfg?key=test_220"//李倩千海金 18611112222
 //     const val baseurl = "http://192.168.31.101:8080/cfg?key=test_101"//李倩千海金 18611112222
@@ -27,7 +27,7 @@ object Constant {
 //    const val baseurl = "http://192.168.31.171:8080/cfg?key=test_171" // 邓工 签约解约环境
 //    const val baseurl = "http://192.168.21.71:8280/cfg?key=mtp_20"
 
-//    const val baseurl = "http://192.168.31.118:8080/cfg?key=test_118"//黄老板 华南顺通 调试
+    const val baseurl = "http://192.168.31.118:8080/cfg?key=test_118"//黄老板 华南顺通 调试
 //        const val baseurl = "http://192.168.31.136:8080/cfg?key=test_136"//黄老板 华南顺通
 
 
@@ -269,6 +269,10 @@ object Constant {
     const val table_mobile_hnst_xhcd_zdcj = "table_mobile_hnst_xhcd_zdcj"
     /** 华南顺通-现货仓单-明细  **/
     const val table_mobile_hnst_xhcd_mx = "table_mobile_hnst_xhcd_mx"
+    /** 云融大宗-融资管理-申请单 **/
+    const val table_mobile_yrdz_rzgl_sqd = "table_mobile_yrdz_rzgl_sqd"
+    /** 云融大宗-融资管理-合同 ***/
+    const val table_mobile_yrdz_rzgl_ht = "table_mobile_yrdz_rzgl_ht"
 
 
     /** 华南顺通-预售仓单_订单汇总 */

+ 53 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/FinanceContentVIewHolder.kt

@@ -0,0 +1,53 @@
+package cn.muchinfo.rma.view.base.hnstmain.finance
+
+import android.view.Gravity
+import androidx.appcompat.app.AppCompatActivity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.WrFactorTypeInfoExData
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.autoSize
+import cn.muchinfo.rma.view.autoWidget.textColorInt
+import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+import mtp.polymer.com.autowidget.adapter.BaseViewHolder
+import org.jetbrains.anko.*
+
+/**
+ * 商品信息viewholder
+ * @property activity AppCompatActivity
+ * @property viewmodel FinanceManagementViewModel
+ * @constructor
+ */
+class FinanceContentVIewHolder(private val activity : AppCompatActivity,private val viewmodel : FinanceManagementViewModel) : BaseViewHolder<WrFactorTypeInfoExData>(activity){
+    override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
+
+    override fun _FrameLayout.createContentView() {
+        linearLayout {
+            gravity = Gravity.CENTER_VERTICAL
+            background = resources.getDrawable(R.color.white)
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL
+                textView {
+                    data.bindOptional(context){
+                        text = it?.name
+                    }
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_gray_color
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(35)
+                }
+            }.lparams(autoSize(250), autoSize(120))
+
+            textView {
+                data.bindOptional(context){
+                        text = it?.value
+                    }
+                textSizeAuto = 31
+                textColorInt = R.color.rma_black_33
+            }.lparams(wrapContent, wrapContent) {
+                marginStart = autoSize(35)
+            }
+
+        }.lparams(matchParent, autoSize(120))
+    }
+
+}

+ 424 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/FinanceManagementActivity.kt

@@ -0,0 +1,424 @@
+package cn.muchinfo.rma.view.base.hnstmain.finance
+
+import android.os.Build
+import android.os.Bundle
+import android.view.Gravity
+import android.view.MotionEvent
+import android.view.View
+import android.view.ViewGroup
+import androidx.annotation.RequiresApi
+import androidx.appcompat.app.AppCompatActivity
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.app.Constant
+import cn.muchinfo.rma.view.base.hnstmain.finance.adapter.FinanceApplicationContentAdapter
+import cn.muchinfo.rma.view.base.hnstmain.finance.adapter.FinanceContractContentAdapter
+import cn.muchinfo.rma.view.base.hnstmain.spotwarehouse.SpotWareHouseViewModel
+import cn.muchinfo.rma.view.base.hnstmain.spotwarehouse.adapter.SpotWarehouseContentAdapter
+import cn.muchinfo.rma.view.base.procurement.TopTabAdpater
+import com.blankj.utilcode.util.ConvertUtils
+import com.blankj.utilcode.util.SizeUtils
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
+import com.qmuiteam.qmui.widget.tab.QMUITabSegment
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
+import org.jetbrains.anko.*
+import org.jetbrains.anko.support.v4.viewPager
+
+/**
+ * 融资信息管理页面
+ */
+class FinanceManagementActivity : BaseActivity<FinanceManagementViewModel>(){
+
+    lateinit var segment: QMUITabSegment
+    var selectedTabIndex: Int = 0
+    private lateinit var viewPager: ViewPager
+
+    //申请单ui
+    private val applicationUI by lazy { ApplicationUI(this,viewModel) }
+
+    //合同ui
+    private val contractUI by lazy { ContractUI(this,viewModel) }
+
+    //viewpager的适配器
+    private var newPagerAdapter : PagerAdapter? = null
+
+    //tabSegment标题
+    private val newTabsArray : ArrayList<String> = arrayListOf()
+
+    //暂存的页面组
+    private val uiList : ArrayList<_FrameLayout> = arrayListOf()
+
+    fun initMenuData(){
+
+        newTabsArray.add("申请单")
+        uiList.add(applicationUI.root)
+
+        newTabsArray.add("合同")
+        uiList.add(contractUI.root)
+
+        newPagerAdapter = object : PagerAdapter() {
+
+            override fun getPageTitle(position: Int): CharSequence? = newTabsArray[position]
+
+            override fun instantiateItem(container: ViewGroup, position: Int): Any {
+                return uiList.get(position).apply {
+                    container.addView(
+                        this,
+                        ViewGroup.LayoutParams(matchParent, matchParent)
+                    )
+                }
+            }
+
+            override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
+                (`object` as? View)?.let { container.removeView(it) }
+            }
+
+            override fun isViewFromObject(view: View, `object`: Any): Boolean = view == `object`
+
+            override fun getCount(): Int = newTabsArray.size
+
+        }
+
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        verticalLayout {
+            createLoadingDialog(hintStr = "").bindTaskStatus(context, viewModel.loadingDialogStatus)
+            initMenuData()
+            topBar {
+                commonLeftButton()
+                commonTitle {
+                    text = "融资管理"
+                }
+            }
+
+            tabSegment {
+                segment = this
+                background = resources.getDrawable(R.color.segtabment_bg_color)
+                addOnTabSelectedListener(object :
+                    QMUITabSegment.OnTabSelectedListener {
+                    override fun onDoubleTap(index: Int) {}
+                    override fun onTabReselected(index: Int) {}
+                    override fun onTabUnselected(index: Int) {}
+                    override fun onTabSelected(index: Int) {
+                        selectedTabIndex = index
+                    }
+                })
+                mode = QMUITabSegment.MODE_FIXED
+                setIndicator(QMUITabIndicator(QMUIDisplayHelper.dp2px(context, 2), false, true))
+                setDefaultTextSize(ConvertUtils.sp2px(16f), ConvertUtils.sp2px(16f))
+            }.lparams(matchParent, autoSize(100))
+
+            view {
+                background = resources.getDrawable(R.color.main_hit_bg_color)
+            }.lparams(matchParent, autoSize(1)) {
+                marginStart = autoSize(32)
+                marginEnd = autoSize(32)
+            }
+
+            viewPager {
+                background = resources.getDrawable(R.color.white)
+                viewPager = this
+                adapter = newPagerAdapter
+            }.lparams(matchParent, matchParent)
+
+            segment.setupWithViewPager(viewPager)
+            segment.selectTab(selectedTabIndex)
+        }
+    }
+
+}
+
+/**
+ * 申请单UI
+ * @property activity AppCompatActivity
+ * @property viewModel SpotWareHouseViewModel
+ * @constructor
+ */
+class ApplicationUI(private val activity : AppCompatActivity, private val viewModel: FinanceManagementViewModel)  : FinanceApplicationContentAdapter.OnContentScrollListener {
+
+    private lateinit var swipeToLayout: SwipeToLoadLayout
+    private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
+
+    val topAdapter by lazy {
+        TopTabAdpater(activity)
+    }
+
+    val financeApplicationContentAdapter by lazy {
+        FinanceApplicationContentAdapter(
+            activity,viewModel
+        )
+    }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
+
+    @RequiresApi(Build.VERSION_CODES.N)
+    val root = _FrameLayout(activity).apply {
+        verticalLayout {
+            viewModel.queryApplicationTitle(Constant.table_mobile_yrdz_rzgl_sqd)
+            financeApplicationContentAdapter.setOnContentScrollListener(this@ApplicationUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//待点价头部左侧数据
+                        viewModel.applyTitle.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent) {
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(SizeUtils.dp2px(90f)), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    setOnCustomScrollChangeListener { _, scrollX, _, _, _ ->
+                        financeApplicationContentAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<FinanceApplicationContentAdapter.ItemViewHolder> =
+                            financeApplicationContentAdapter.viewHolderCacheList
+
+                        if (null != viewHolderCacheList) {
+                            val size = viewHolderCacheList.size
+                            for (i in 0 until size) {
+                                viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                    scrollX,
+                                    0
+                                )
+                            }
+                        }
+                    }
+                    relativeLayout {
+                        recyclerView {//待点价头部右侧数据
+                            val linearLayoutManager = LinearLayoutManager(context)
+                            linearLayoutManager.orientation = LinearLayoutManager.HORIZONTAL
+                            layoutManager = linearLayoutManager
+                            background = resources.getDrawable(R.color.white)
+                            adapter = topAdapter
+                        }
+                        viewModel.applyTitle.bindOptional(context) {
+                            val titleStringList = arrayListOf<String>()
+                            it?.subList(1, it.size)?.forEach { data ->
+                                titleStringList.add(data.columntitle?.replace("\\n", "\n") ?: "")
+                            }
+                            topAdapter.setDatas(titleStringList)
+                        }
+                    }
+                }.lparams(matchParent, matchParent)
+            }.lparams(matchParent, autoSize(100))
+
+            statusLayout(contentBlock = {
+                statusLayout = this
+                setRetryAction {
+
+                }
+                swipeToLoadLayout {
+                    swipeToLayout = this
+                    setEnableRefresh(false)
+                    setEnableLoadMore(true)
+                    setOnRefreshListener {
+
+                    }
+                    setEnableScrollContentWhenLoaded(false)
+                    setEnableLoadMoreWhenContentNotFull(false)
+
+                    recyclerView {//待点价列表
+                        background = resources.getDrawable(R.color.white)
+                        adapter = financeApplicationContentAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<FinanceApplicationContentAdapter.ItemViewHolder> =
+                                    financeApplicationContentAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                            financeApplicationContentAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+
+
+                }
+            }, emptyBlock = {
+                emptyView(hint = resources.getString(R.string.now_no_data))
+            }).lparams(matchParent, matchParent)
+
+            viewModel.applyDataList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
+                    statusLayout.showEmpty()
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
+                        swipeToLayout.finishRefresh()
+//                        mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
+                    }
+                    statusLayout.showSuccess()
+                    financeApplicationContentAdapter.setDatas(it)
+                }
+            }
+        }
+    }
+
+}
+
+
+/**
+ * 合同UI
+ * @property activity AppCompatActivity
+ * @property viewModel SpotWareHouseViewModel
+ * @constructor
+ */
+class ContractUI(private val activity : AppCompatActivity, private val viewModel: FinanceManagementViewModel)  : FinanceContractContentAdapter.OnContentScrollListener {
+
+    private lateinit var swipeToLayout: SwipeToLoadLayout
+    private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
+
+    val topAdapter by lazy {
+        TopTabAdpater(activity)
+    }
+
+    val financeContractContentAdapter by lazy {
+        FinanceContractContentAdapter(
+            activity,viewModel
+        )
+    }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
+
+    @RequiresApi(Build.VERSION_CODES.N)
+    val root = _FrameLayout(activity).apply {
+        verticalLayout {
+            viewModel.queryContractTitle(Constant.table_mobile_yrdz_rzgl_ht)
+            financeContractContentAdapter.setOnContentScrollListener(this@ContractUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//待点价头部左侧数据
+                        viewModel.contractTitle.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent) {
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(SizeUtils.dp2px(90f)), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    setOnCustomScrollChangeListener { _, scrollX, _, _, _ ->
+                        financeContractContentAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<FinanceContractContentAdapter.ItemViewHolder> =
+                            financeContractContentAdapter.viewHolderCacheList
+
+                        if (null != viewHolderCacheList) {
+                            val size = viewHolderCacheList.size
+                            for (i in 0 until size) {
+                                viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                    scrollX,
+                                    0
+                                )
+                            }
+                        }
+                    }
+                    relativeLayout {
+                        recyclerView {//待点价头部右侧数据
+                            val linearLayoutManager = LinearLayoutManager(context)
+                            linearLayoutManager.orientation = LinearLayoutManager.HORIZONTAL
+                            layoutManager = linearLayoutManager
+                            background = resources.getDrawable(R.color.white)
+                            adapter = topAdapter
+                        }
+                        viewModel.contractTitle.bindOptional(context) {
+                            val titleStringList = arrayListOf<String>()
+                            it?.subList(1, it.size)?.forEach { data ->
+                                titleStringList.add(data.columntitle?.replace("\\n", "\n") ?: "")
+                            }
+                            topAdapter.setDatas(titleStringList)
+                        }
+                    }
+                }.lparams(matchParent, matchParent)
+            }.lparams(matchParent, autoSize(100))
+
+            statusLayout(contentBlock = {
+                statusLayout = this
+                setRetryAction {
+
+                }
+                swipeToLoadLayout {
+                    swipeToLayout = this
+                    setEnableRefresh(false)
+                    setEnableLoadMore(true)
+                    setOnRefreshListener {
+
+                    }
+                    setEnableScrollContentWhenLoaded(false)
+                    setEnableLoadMoreWhenContentNotFull(false)
+
+                    recyclerView {//待点价列表
+                        background = resources.getDrawable(R.color.white)
+                        adapter = financeContractContentAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<FinanceContractContentAdapter.ItemViewHolder> =
+                                    financeContractContentAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                            financeContractContentAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+
+
+                }
+            }, emptyBlock = {
+                emptyView(hint = resources.getString(R.string.now_no_data))
+            }).lparams(matchParent, matchParent)
+
+            viewModel.contractDataList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
+                    statusLayout.showEmpty()
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
+                        swipeToLayout.finishRefresh()
+//                        mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
+                    }
+                    statusLayout.showSuccess()
+                    financeContractContentAdapter.setDatas(it)
+                }
+            }
+        }
+    }
+
+}

+ 303 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/FinanceManagementDetailsActivity.kt

@@ -0,0 +1,303 @@
+package cn.muchinfo.rma.view.base.hnstmain.finance
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.view.Gravity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.applystatus
+import cn.muchinfo.rma.global.data.DeliveryGoodsDetailData
+import cn.muchinfo.rma.global.data.WrFactorTypeInfoExData
+import cn.muchinfo.rma.global.data.WrFinanceBuyApplyData
+import cn.muchinfo.rma.global.isBlankString
+import cn.muchinfo.rma.global.toPercentage
+import cn.muchinfo.rma.global.toWanPercentage
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.future.trade.itemView
+import cn.muchinfo.rma.view.base.home.commodity.newcommodity.DemoViewHolder
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import mtp.polymer.com.autowidget.adapter.BaseAdapter
+import org.jetbrains.anko.*
+
+/**
+ * 申请单详情
+ */
+class FinanceManagementDetailsActivity : BaseActivity<FinanceManagementViewModel>(){
+
+    val data by lazy { intent.getParcelableExtra<WrFinanceBuyApplyData>("data") as WrFinanceBuyApplyData }
+
+    private val financeContentAdapter : BaseAdapter<WrFactorTypeInfoExData, FinanceContentVIewHolder> =
+        BaseAdapter { _, _ -> FinanceContentVIewHolder(this, viewModel) }
+
+    @SuppressLint("SetTextI18n")
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        verticalLayout {
+            viewModel.queryWrFactorTypeInfoEx(wrfactortypeid = data.wrfactortypeid ?: "")
+            background = resources.getDrawable(R.color.segtabment_bg_color)
+            topBar {
+                commonLeftButton()
+                commonTitle {
+                    text = "申请单详情"
+                }
+            }
+
+            nestedScrollView{
+                verticalLayout {
+                    linearLayout {
+                        gravity = Gravity.CENTER_VERTICAL
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "融出方"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_zhushi_text_color
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(36)
+                            }
+                        }.lparams(autoSize(250), autoSize(120))
+
+                        textView {
+                            text = data.financename
+                            textSizeAuto = 34
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent)
+                    }.lparams(matchParent, autoSize(120))
+
+                    itemView()
+
+                    linearLayout {
+                        gravity = Gravity.CENTER_VERTICAL
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "借款金额"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_zhushi_text_color
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(36)
+                            }
+                        }.lparams(autoSize(250), autoSize(120))
+
+                        textView {
+                            text = data.tradeamount
+                            textSizeAuto = 34
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent)
+                    }.lparams(matchParent, autoSize(120))
+
+                    itemView()
+
+                    linearLayout {
+                        gravity = Gravity.CENTER_VERTICAL
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "保证金"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_zhushi_text_color
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(36)
+                            }
+                        }.lparams(autoSize(250), autoSize(120))
+
+                        textView {
+                            text = data.freezebuymargin
+                            textSizeAuto = 34
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent)
+                    }.lparams(matchParent, autoSize(120))
+
+                    itemView()
+
+                    linearLayout {
+                        gravity = Gravity.CENTER_VERTICAL
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "交收月"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_zhushi_text_color
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(36)
+                            }
+                        }.lparams(autoSize(250), autoSize(120))
+
+                        textView {
+                            text = data.deliverymonth
+                            textSizeAuto = 34
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent)
+                    }.lparams(matchParent, autoSize(120))
+
+                    itemView()
+
+                    linearLayout {
+                        gravity = Gravity.CENTER_VERTICAL
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "商品数量"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_zhushi_text_color
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(36)
+                            }
+                        }.lparams(autoSize(250), autoSize(120))
+
+                        textView {
+                            text = data.orderqty + data.enumdicname
+                            textSizeAuto = 34
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent)
+                    }.lparams(matchParent, autoSize(120))
+
+                    itemView()
+
+                    linearLayout {
+                        gravity = Gravity.CENTER_VERTICAL
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "申请时间"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_zhushi_text_color
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(36)
+                            }
+                        }.lparams(autoSize(250), autoSize(120))
+
+                        textView {
+                            text = data.applydate
+                            textSizeAuto = 34
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent)
+                    }.lparams(matchParent, autoSize(120))
+
+                    itemView()
+
+                    linearLayout {
+                        gravity = Gravity.CENTER_VERTICAL
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "状态"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_zhushi_text_color
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(36)
+                            }
+                        }.lparams(autoSize(250), autoSize(120))
+
+                        textView {
+                            text = data.applydate?.applystatus()
+                            textSizeAuto = 34
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent)
+                    }.lparams(matchParent, autoSize(120))
+
+                    view {
+
+                    }.lparams(matchParent, autoSize(20))
+
+                    verticalLayout {
+                        background = resources.getDrawable(R.color.white)
+                        textView {
+                            text = "融资信息"
+                            textSizeAuto = 34
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent){
+                            marginStart = autoSize(36)
+                            topMargin = autoSize(20)
+                        }
+
+                        verticalLayout {
+                            backgroundResource = R.mipmap.yrdz_finance_bg
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                textView {
+                                    text = "产品名称"
+                                    textSizeAuto = 29
+                                    textColorInt = R.color.hint_text_color
+                                }.lparams(wrapContent, wrapContent){
+                                    marginStart = autoSize(23)
+                                }
+
+                                emptyView()
+
+                                textView {
+                                    text = "天数/保证金/费用(日)"
+                                    textSizeAuto = 29
+                                    textColorInt = R.color.hint_text_color
+                                }.lparams(wrapContent, wrapContent){
+                                    marginEnd = autoSize(23)
+                                }
+                            }.lparams(matchParent, autoSize(80))
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                textView {
+                                    text = data.productname
+                                    textSizeAuto = 34
+                                    textColorStr = "#9E6E4E"
+                                }.lparams(wrapContent, wrapContent){
+                                    marginStart = autoSize(23)
+                                }
+
+                                emptyView()
+
+                                textView {
+                                    var cost = ""
+                                    if (data.interestratemode == "3"){
+                                        cost = data.interestrate + "元/" + data.enumdicname
+                                    }else if (data.interestratemode == "1"){
+                                        cost = data.interestrate?.toPercentage() ?: "-"
+                                    }else if (data.interestratemode == "2"){
+                                        cost = data.interestrate?.toWanPercentage() ?: "-"
+                                    }
+
+                                    text = data.financingdays + "/" + data.marginratio?.toPercentage() + "/" + cost
+                                    textSizeAuto = 29
+                                    textColorInt = R.color.hint_text_color
+                                }.lparams(wrapContent, wrapContent){
+                                    marginEnd = autoSize(23)
+                                }
+                            }.lparams(matchParent, autoSize(80))
+                        }.lparams(matchParent, autoSize(320)){
+                            topMargin = autoSize(25)
+                            bottomMargin = autoSize(20)
+                        }
+
+                        view {
+
+                        }.lparams(matchParent, autoSize(20))
+
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "商品信息"
+                                textSizeAuto = 34
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent){
+                                marginStart = autoSize(36)
+                            }
+                        }.lparams(matchParent, autoSize(70))
+                        recyclerView {
+                            background = resources.getDrawable(R.color.white)
+                            adapter = financeContentAdapter
+                            isNestedScrollingEnabled = false
+                        }.lparams(matchParent, matchParent)
+
+                        viewModel.wrFactorTypeInfoExDataList.bindOptional(context){
+                            financeContentAdapter.setNewData(it)
+                        }
+
+                    }.lparams(matchParent, wrapContent)
+                }
+            }.lparams(matchParent, matchParent)
+        }
+    }
+
+}
+

+ 205 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/FinanceManagementViewModel.kt

@@ -0,0 +1,205 @@
+package cn.muchinfo.rma.view.base.hnstmain.finance
+
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.*
+import cn.muchinfo.rma.global.toPercentage
+import cn.muchinfo.rma.global.toWanPercentage
+import cn.muchinfo.rma.view.MyApplication
+import cn.muchinfo.rma.view.autoWidget.toArrayList
+import cn.muchinfo.rma.view.base.BaseViewModel
+import mtp.polymer.com.autowidget.utils.TaskUiModel
+
+//融资管理viewmodel
+class FinanceManagementViewModel : BaseViewModel(){
+
+    /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
+    /**
+     * 申请单头部数据
+     */
+    val applyTitle: MutableLiveData<List<ColumnsData>> = MutableLiveData()
+
+    /**
+     * 申请单列表数据
+     */
+    val applyDataList : MutableLiveData<List<WrFinanceBuyApplyData>> = MutableLiveData()
+
+
+    /**
+     * 合同头部数据
+     */
+    val contractTitle :  MutableLiveData<List<ColumnsData>> = MutableLiveData()
+
+    /**
+     * 合同列表数据
+     */
+    val contractDataList : MutableLiveData<List<WrScfContractData>> = MutableLiveData()
+
+
+    /**
+     * 详情内的商品信息列表
+     */
+    val wrFactorTypeInfoExDataList : MutableLiveData<List<WrFactorTypeInfoExData>> = MutableLiveData()
+
+
+    fun queryWrFactorTypeInfoEx(wrfactortypeid : String){
+        val params = mutableMapOf<String,String>().apply {
+            put("wrfactortypeid",wrfactortypeid)
+        }
+        MyApplication.getInstance()?.financialManager?.queryWrFactorTypeInfoEx(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                wrFactorTypeInfoExDataList.postValue(respData)
+            }
+        }
+    }
+
+
+    //-----------------申请单------------------
+    /**
+     * 查询现货仓单-指定成交头部数据
+     */
+    fun queryApplicationTitle(tableKey: String){
+        val params = mutableMapOf<String, String>().apply {
+            put("tableKey", tableKey)
+            put("tableType", "3")
+        }
+        MyApplication.getInstance()?.commonManager?.queryTableDefine(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                val newlist = respData?.get(0)?.columns?.toArrayList()
+                newlist?.sortWith(Comparator { t1, t2 ->
+                    t1.orderindex?.toInt()?.minus(t2.orderindex?.toInt() ?: 0) ?: 0
+                })
+                applyTitle.postValue(newlist)
+                queryWrFinanceBuyApply()
+            }
+        }
+    }
+
+    /**
+     * 查询申请单
+     */
+    fun queryWrFinanceBuyApply(){
+        val params = mutableMapOf<String,String>().apply {
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
+        }
+        MyApplication.getInstance()?.financialManager?.queryWrFinanceBuyApply(params = params){ isSuccess, respData, error ->
+            if (isSuccess){
+                applyDataList.postValue(getApplicationRightData(respData ?: arrayListOf()))
+            }
+        }
+    }
+
+    /**
+     * 申请单组装右侧数据
+     */
+    fun getApplicationRightData(respData: List<WrFinanceBuyApplyData>) : List<WrFinanceBuyApplyData>{
+        val newList = arrayListOf<WrFinanceBuyApplyData>()
+        respData.forEach {
+            val newRightData = arrayListOf<String>()
+            //借款金额'
+            newRightData.add(it.tradeamount ?: "-")
+            //购买商品
+            newRightData.add(it.productname ?: "-")
+            //商品数量
+            newRightData.add(it.orderqty + it.enumdicname)
+            //借款天数
+            newRightData.add(it.financingdays ?: "-")
+            //保证金
+            newRightData.add(it.freezebuymargin ?: "-")
+            //费用(日)
+            var cost = ""
+            if (it.interestratemode == "3"){
+                cost = it.interestrate + "元/" + it.enumdicname
+            }else if (it.interestratemode == "1"){
+                cost = it.interestrate?.toPercentage() ?: "-"
+            }else if (it.interestratemode == "2"){
+                cost = it.interestrate?.toWanPercentage() ?: "-"
+            }
+            newRightData.add(cost)
+            //结息方式
+            newRightData.add(if (it.interestsettlemode == "1"){"日结"}else{"月结"})
+            //最小计费天数
+            newRightData.add(it.interestminlen ?: "-")
+            //融出方
+            newRightData.add(it.financename ?: "-")
+            //申请时间
+            newRightData.add(it.applydate ?: "-")
+            val newData = it.copy(rightData = newRightData)
+            newList.add(newData)
+        }
+        return newList
+    }
+
+    //-----------------合同------------------
+    /**
+     * 查询合同头部数据
+     */
+    fun queryContractTitle(tableKey: String){
+        val params = mutableMapOf<String, String>().apply {
+            put("tableKey", tableKey)
+            put("tableType", "3")
+        }
+        MyApplication.getInstance()?.commonManager?.queryTableDefine(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                val newlist = respData?.get(0)?.columns?.toArrayList()
+                newlist?.sortWith(Comparator { t1, t2 ->
+                    t1.orderindex?.toInt()?.minus(t2.orderindex?.toInt() ?: 0) ?: 0
+                })
+                contractTitle.postValue(newlist)
+                queryWrScfContract()
+            }
+        }
+    }
+
+    /**
+     * 查询合同
+     */
+    fun queryWrScfContract(){
+        val params = mutableMapOf<String,String>().apply {
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
+        }
+        MyApplication.getInstance()?.financialManager?.queryWrScfContract(params = params){ isSuccess, respData, error ->
+            if (isSuccess){
+                contractDataList.postValue(getContractRightData(respData ?: arrayListOf()))
+            }
+        }
+    }
+
+    /**
+     * 合同组装右侧数据
+     */
+    fun getContractRightData(respData: List<WrScfContractData>) : List<WrScfContractData>{
+        val newList = arrayListOf<WrScfContractData>()
+        respData.forEach {
+            val newRightData = arrayListOf<String>()
+            //借款金额'
+            newRightData.add(it.lenderamount ?: "-")
+            //购买商品
+            newRightData.add(it.productname ?: "-")
+            //商品数量
+            newRightData.add(it.wrqty + it.enumdicname)
+            //剩余金额
+            newRightData.add(it.remainamount ?: "-")
+            //剩余数量
+            newRightData.add(it.remainwrpositionqty  + it.enumdicname)
+            //已回购数量
+            newRightData.add(it.buybackwrpositionqty + it.enumdicname)
+            //已结费用
+            newRightData.add(it.closeinterest ?: "-")
+            //未结费用
+            newRightData.add(it.unpaidinterest ?: "-")
+            //费用欠款
+            newRightData.add(it.interestdebt ?: "-")
+            //融出方
+            newRightData.add(it.lenderusername ?: "-")
+            //截止日期
+            newRightData.add(it.deadline ?: "-")
+            val newData = it.copy(rightData = newRightData)
+            newList.add(newData)
+        }
+        return newList
+    }
+}

+ 200 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/adapter/FinanceApplicationContentAdapter.java

@@ -0,0 +1,200 @@
+package cn.muchinfo.rma.view.base.hnstmain.finance.adapter;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.blankj.utilcode.util.ActivityUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cn.muchinfo.rma.R;
+import cn.muchinfo.rma.global.data.HnstWrPositionData;
+import cn.muchinfo.rma.global.data.HoldLBData;
+import cn.muchinfo.rma.global.data.WrFinanceBuyApplyData;
+import cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView;
+import cn.muchinfo.rma.view.base.hnstmain.finance.FinanceManagementViewModel;
+import cn.muchinfo.rma.view.base.hnstmain.spotwarehouse.listed.ListedActivity;
+import cn.muchinfo.rma.view.base.procurement.RightScrollAdapter;
+
+/**
+ * 融资管理申请单adapter
+ */
+public class FinanceApplicationContentAdapter extends RecyclerView.Adapter<FinanceApplicationContentAdapter.ItemViewHolder> {
+
+    private Context context;
+    private List<WrFinanceBuyApplyData> datas;
+    private int index = -1;
+    private int position = -1;
+    private List<ItemViewHolder> mViewHolderList = new ArrayList<>();
+    public int offestX = 0;
+    private OnContentScrollListener onContentScrollListener;
+    private FinanceManagementViewModel viewModel;
+
+    public interface OnContentScrollListener {
+        void onScroll(MotionEvent event);
+    }
+
+    public void setOnContentScrollListener(OnContentScrollListener onContentScrollListener) {
+        this.onContentScrollListener = onContentScrollListener;
+    }
+
+
+    public FinanceApplicationContentAdapter(Context context,FinanceManagementViewModel viewModel) {
+        this.viewModel = viewModel;
+        this.context = context;
+    }
+
+    public void setDatas(List<WrFinanceBuyApplyData> datas) {
+        this.datas = datas;
+        notifyDataSetChanged();
+    }
+
+    private void setPosition(int position) {
+        if (this.position == position) {
+            this.position = -1;
+            notifyItemChanged(index);
+        } else {
+            this.position = position;
+            notifyItemChanged(position);
+        }
+    }
+
+    @NonNull
+    @Override
+    public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+        View view = LayoutInflater.from(context).inflate(R.layout.finance_layout_item_content, viewGroup, false);
+        return new ItemViewHolder(view);
+    }
+
+    @SuppressLint("SetTextI18n")
+    @Override
+    public void onBindViewHolder(@NonNull final ItemViewHolder itemViewHolder, int i) {
+        this.index = i;
+        WrFinanceBuyApplyData data = datas.get(i);
+
+        itemViewHolder.tvLeftTitle.setText(data.getDeliverygoodsname());
+
+        itemViewHolder.tv_left_bottom_title.setText(data.getWrtypename());
+        //右边滑动部分
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
+        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
+        itemViewHolder.rvItemRight.setLayoutManager(linearLayoutManager);
+        itemViewHolder.rvItemRight.setHasFixedSize(true);
+        RightScrollAdapter rightScrollAdapter = new RightScrollAdapter(context);
+        rightScrollAdapter.setDatas(datas.get(i).getRightData());
+        itemViewHolder.rvItemRight.setAdapter(rightScrollAdapter);
+        //缓存当前holder
+        if (!mViewHolderList.contains(itemViewHolder)) {
+            mViewHolderList.add(itemViewHolder);
+        }
+        itemViewHolder.allView.setVisibility(View.GONE);
+
+        if (i == this.position) {
+            itemViewHolder.roots_view.setBackgroundColor(context.getResources().getColor(R.color.rma_list_select_color));
+            itemViewHolder.allView.setVisibility(View.VISIBLE);
+        } else {
+            itemViewHolder.roots_view.setBackgroundColor(context.getResources().getColor(R.color.white));
+            itemViewHolder.allView.setVisibility(View.GONE);
+        }
+
+        itemViewHolder.all_click_View.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                setPosition(i);
+            }
+        });
+
+        itemViewHolder.details.setVisibility(View.VISIBLE);
+        itemViewHolder.invoice_register.setVisibility(View.VISIBLE);
+
+        itemViewHolder.invoice_register.setOnClickListener(view -> {
+
+        });
+
+        itemViewHolder.details.setOnClickListener(view -> {
+
+        });
+
+        itemViewHolder.horItemScrollview.setEventListener(new CustomHorizontalScrollView.EventListener() {
+            @Override
+            public void onEvent(MotionEvent event) {
+
+                if (null != onContentScrollListener) onContentScrollListener.onScroll(event);
+            }
+        });
+        //由于viewHolder的缓存,在1级缓存取出来是2个viewholder,并且不会被重新赋值,所以这里需要处理缓存的viewholder的位移
+        itemViewHolder.horItemScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+            @Override
+            public void onGlobalLayout() {
+                if (!itemViewHolder.isLayoutFinish()) {
+                    itemViewHolder.horItemScrollview.scrollTo(offestX, 0);
+                    itemViewHolder.setLayoutFinish(true);
+                }
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return null == datas ? 0 : datas.size();
+    }
+
+    public List<ItemViewHolder> getViewHolderCacheList() {
+        return mViewHolderList;
+    }
+
+    public int getOffestX() {
+        return offestX;
+    }
+
+    public static class ItemViewHolder extends RecyclerView.ViewHolder {
+        LinearLayout roots_view;//根部布局
+        TextView details;//详情
+        TextView invoice_register;//撤单
+        ImageView load_more;//更多
+        LinearLayout allView;//隐藏的底部操作空间
+        LinearLayout all_click_View;//item左侧点击控件
+        TextView tvLeftTitle;//左边销售方字段
+        TextView tv_left_bottom_title;//合同编号
+        RecyclerView rvItemRight;//右方的列表
+        public CustomHorizontalScrollView horItemScrollview;//右方的滑动控件
+        private boolean isLayoutFinish;//自定义字段,用于标记layout
+
+        public boolean isLayoutFinish() {
+            return isLayoutFinish;
+        }
+
+        public void setLayoutFinish(boolean layoutFinish) {
+            isLayoutFinish = layoutFinish;
+        }
+
+        public ItemViewHolder(@NonNull View itemView) {
+            super(itemView);
+            details = itemView.findViewById(R.id.details);
+            load_more = itemView.findViewById(R.id.load_more);
+            tvLeftTitle = itemView.findViewById(R.id.tv_left_title);
+            rvItemRight = itemView.findViewById(R.id.rv_item_right);
+            horItemScrollview = itemView.findViewById(R.id.hor_item_scrollview);
+            allView = itemView.findViewById(R.id.all_view);
+            tv_left_bottom_title = itemView.findViewById(R.id.tv_left_bottom_title);
+            all_click_View = itemView.findViewById(R.id.all_click_View);
+            invoice_register = itemView.findViewById(R.id.invoice_register);
+
+            roots_view = itemView.findViewById(R.id.roots_view);
+        }
+    }
+}

+ 206 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/finance/adapter/FinanceContractContentAdapter.java

@@ -0,0 +1,206 @@
+package cn.muchinfo.rma.view.base.hnstmain.finance.adapter;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cn.muchinfo.rma.R;
+import cn.muchinfo.rma.global.data.WrFinanceBuyApplyData;
+import cn.muchinfo.rma.global.data.WrScfContractData;
+import cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView;
+import cn.muchinfo.rma.view.base.hnstmain.finance.FinanceManagementViewModel;
+import cn.muchinfo.rma.view.base.procurement.RightScrollAdapter;
+
+/**
+ * 融资管理申请单adapter
+ */
+public class FinanceContractContentAdapter extends RecyclerView.Adapter<FinanceContractContentAdapter.ItemViewHolder> {
+
+    private Context context;
+    private List<WrScfContractData> datas;
+    private int index = -1;
+    private int position = -1;
+    private List<ItemViewHolder> mViewHolderList = new ArrayList<>();
+    public int offestX = 0;
+    private OnContentScrollListener onContentScrollListener;
+    private FinanceManagementViewModel viewModel;
+
+    public interface OnContentScrollListener {
+        void onScroll(MotionEvent event);
+    }
+
+    public void setOnContentScrollListener(OnContentScrollListener onContentScrollListener) {
+        this.onContentScrollListener = onContentScrollListener;
+    }
+
+
+    public FinanceContractContentAdapter(Context context, FinanceManagementViewModel viewModel) {
+        this.context = context;
+        this.viewModel = viewModel;
+    }
+
+    public void setDatas(List<WrScfContractData> datas) {
+        this.datas = datas;
+        notifyDataSetChanged();
+    }
+
+    private void setPosition(int position) {
+        if (this.position == position) {
+            this.position = -1;
+            notifyItemChanged(index);
+        } else {
+            this.position = position;
+            notifyItemChanged(position);
+        }
+    }
+
+    @NonNull
+    @Override
+    public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+        View view = LayoutInflater.from(context).inflate(R.layout.finance_layout_item_content, viewGroup, false);
+        return new ItemViewHolder(view);
+    }
+
+    @SuppressLint("SetTextI18n")
+    @Override
+    public void onBindViewHolder(@NonNull final ItemViewHolder itemViewHolder, int i) {
+        this.index = i;
+        WrScfContractData data = datas.get(i);
+
+        itemViewHolder.tvLeftTitle.setText(data.getDeliverygoodsname());
+
+        itemViewHolder.tv_left_bottom_title.setText(data.getWrtypename());
+        //右边滑动部分
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
+        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
+        itemViewHolder.rvItemRight.setLayoutManager(linearLayoutManager);
+        itemViewHolder.rvItemRight.setHasFixedSize(true);
+        RightScrollAdapter rightScrollAdapter = new RightScrollAdapter(context);
+        rightScrollAdapter.setDatas(datas.get(i).getRightData());
+        itemViewHolder.rvItemRight.setAdapter(rightScrollAdapter);
+        //缓存当前holder
+        if (!mViewHolderList.contains(itemViewHolder)) {
+            mViewHolderList.add(itemViewHolder);
+        }
+        itemViewHolder.allView.setVisibility(View.GONE);
+
+        if (i == this.position) {
+            itemViewHolder.roots_view.setBackgroundColor(context.getResources().getColor(R.color.rma_list_select_color));
+            itemViewHolder.allView.setVisibility(View.VISIBLE);
+        } else {
+            itemViewHolder.roots_view.setBackgroundColor(context.getResources().getColor(R.color.white));
+            itemViewHolder.allView.setVisibility(View.GONE);
+        }
+
+        itemViewHolder.all_click_View.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                setPosition(i);
+            }
+        });
+
+        itemViewHolder.details.setVisibility(View.VISIBLE);
+        itemViewHolder.fanacel_register.setVisibility(View.VISIBLE);
+        itemViewHolder.warehouse_register.setVisibility(View.VISIBLE);
+
+        //回购仓单
+        itemViewHolder.warehouse_register.setOnClickListener(view -> {
+
+        });
+
+        //支付欠款
+        itemViewHolder.fanacel_register.setOnClickListener(view -> {
+
+        });
+
+        itemViewHolder.details.setOnClickListener(view -> {
+
+        });
+
+        itemViewHolder.horItemScrollview.setEventListener(new CustomHorizontalScrollView.EventListener() {
+            @Override
+            public void onEvent(MotionEvent event) {
+
+                if (null != onContentScrollListener) onContentScrollListener.onScroll(event);
+            }
+        });
+        //由于viewHolder的缓存,在1级缓存取出来是2个viewholder,并且不会被重新赋值,所以这里需要处理缓存的viewholder的位移
+        itemViewHolder.horItemScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+            @Override
+            public void onGlobalLayout() {
+                if (!itemViewHolder.isLayoutFinish()) {
+                    itemViewHolder.horItemScrollview.scrollTo(offestX, 0);
+                    itemViewHolder.setLayoutFinish(true);
+                }
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return null == datas ? 0 : datas.size();
+    }
+
+    public List<ItemViewHolder> getViewHolderCacheList() {
+        return mViewHolderList;
+    }
+
+    public int getOffestX() {
+        return offestX;
+    }
+
+    public static class ItemViewHolder extends RecyclerView.ViewHolder {
+        TextView warehouse_register;//回购仓单
+        TextView fanacel_register;//支付欠款
+        LinearLayout roots_view;//根部布局
+        TextView details;//详情
+        TextView invoice_register;//撤单
+        ImageView load_more;//更多
+        LinearLayout allView;//隐藏的底部操作空间
+        LinearLayout all_click_View;//item左侧点击控件
+        TextView tvLeftTitle;//左边销售方字段
+        TextView tv_left_bottom_title;//合同编号
+        RecyclerView rvItemRight;//右方的列表
+        public CustomHorizontalScrollView horItemScrollview;//右方的滑动控件
+        private boolean isLayoutFinish;//自定义字段,用于标记layout
+
+        public boolean isLayoutFinish() {
+            return isLayoutFinish;
+        }
+
+        public void setLayoutFinish(boolean layoutFinish) {
+            isLayoutFinish = layoutFinish;
+        }
+
+        public ItemViewHolder(@NonNull View itemView) {
+            super(itemView);
+            fanacel_register = itemView.findViewById(R.id.fanacel_register);
+            warehouse_register = itemView.findViewById(R.id.warehouse_register);
+            details = itemView.findViewById(R.id.details);
+            load_more = itemView.findViewById(R.id.load_more);
+            tvLeftTitle = itemView.findViewById(R.id.tv_left_title);
+            rvItemRight = itemView.findViewById(R.id.rv_item_right);
+            horItemScrollview = itemView.findViewById(R.id.hor_item_scrollview);
+            allView = itemView.findViewById(R.id.all_view);
+            tv_left_bottom_title = itemView.findViewById(R.id.tv_left_bottom_title);
+            all_click_View = itemView.findViewById(R.id.all_click_View);
+            invoice_register = itemView.findViewById(R.id.invoice_register);
+
+            roots_view = itemView.findViewById(R.id.roots_view);
+        }
+    }
+}

+ 163 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/PerformanceDetailsActivity.kt

@@ -0,0 +1,163 @@
+package cn.muchinfo.rma.view.base.hnstmain.performance
+
+import android.os.Bundle
+import android.view.Gravity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.PerformancePlanData
+import cn.muchinfo.rma.global.data.WarehouseInfoData
+import cn.muchinfo.rma.global.data.WrPerformancePlanStepData
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.future.trade.itemView
+import cn.muchinfo.rma.view.base.home.warehouse.WarehouseInformationViewHolder
+import mtp.polymer.com.autowidget.adapter.BaseAdapter
+import org.jetbrains.anko.*
+
+/**
+ * 履约信息详情页面
+ */
+class PerformanceDetailsActivity : BaseActivity<PerformanceInformationViewModel>(){
+
+    // 下拉刷新
+    private lateinit var swipeToLayout: SwipeToLoadLayout
+    private lateinit var statusLayout: StatusLayout
+
+    val data by lazy { intent.getParcelableExtra<PerformancePlanData>("data") as PerformancePlanData }
+
+    private val unSubmitAdapter: BaseAdapter<WrPerformancePlanStepData, PerformanceDetailsViewHolder> =
+        BaseAdapter { _, _ -> PerformanceDetailsViewHolder(this, viewModel) }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        verticalLayout {
+            viewModel.queryWrPerformancePlanStepList(data = data)
+            background = resources.getDrawable(R.color.main_hit_bg_color)
+            //头部标题
+            topBar {
+                commonLeftButton()
+                commonTitle {
+                    text = "详情"
+                }
+            }
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+                textView {
+                    text = "品种"
+                    textSizeAuto = 34
+                    textColorInt = R.color.rma_zhushi_text_color
+                }.lparams(autoSize(250), wrapContent){
+                    marginStart = autoSize(36)
+                }
+
+                textView {
+                    text = data.deliverygoodsname
+                    textSizeAuto = 29
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent)
+            }.lparams(matchParent, autoSize(132))
+
+            itemView()
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+                textView {
+                    text = "商品"
+                    textSizeAuto = 34
+                    textColorInt = R.color.rma_zhushi_text_color
+                }.lparams(autoSize(250), wrapContent){
+                    marginStart = autoSize(36)
+                }
+
+                textView {
+                    text = data.wrstandardname
+                    textSizeAuto = 29
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent)
+            }.lparams(matchParent, autoSize(132))
+
+            itemView()
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+                textView {
+                    text = "仓库"
+                    textSizeAuto = 34
+                    textColorInt = R.color.rma_zhushi_text_color
+                }.lparams(autoSize(250), wrapContent){
+                    marginStart = autoSize(36)
+                }
+
+                textView {
+                    text = data.warehousename
+                    textSizeAuto = 29
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent)
+            }.lparams(matchParent, autoSize(132))
+
+            itemView()
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+                textView {
+                    text = "关联单号"
+                    textSizeAuto = 34
+                    textColorInt = R.color.rma_zhushi_text_color
+                }.lparams(autoSize(250), wrapContent){
+                    marginStart = autoSize(36)
+                }
+
+                textView {
+                    text = data.relatedorderid
+                    textSizeAuto = 29
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent)
+            }.lparams(matchParent, autoSize(132))
+
+            statusLayout(contentBlock = {
+                statusLayout = this
+//                bindTaskStatus(viewModule.status)
+                setRetryAction {
+
+                }
+                swipeToLoadLayout {
+                    swipeToLayout = this
+                    setEnableRefresh(false)
+                    setEnableLoadMore(false)
+                    setOnRefreshListener {
+
+                    }
+                    setEnableScrollContentWhenLoaded(false)
+                    setEnableLoadMoreWhenContentNotFull(false)
+
+                    // 未提交列表
+                    recyclerView {
+                        background = resources.getDrawable(R.color.main_hit_bg_color)
+                        adapter = unSubmitAdapter
+                    }.lparams(matchParent, matchParent)
+                }
+            }, emptyBlock = {
+                emptyView(hint = resources.getString(R.string.now_no_data))
+            }).lparams(matchParent, matchParent)
+
+            viewModel.wrPerformancePlanStepDataList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
+                    statusLayout.showEmpty()
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
+                        swipeToLayout.finishRefresh()
+                    }
+                    statusLayout.showSuccess()
+                    unSubmitAdapter.setNewData(it)
+                }
+            }
+
+        }
+    }
+
+}

+ 223 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/PerformanceDetailsViewHolder.kt

@@ -0,0 +1,223 @@
+package cn.muchinfo.rma.view.base.hnstmain.performance
+
+import android.view.Gravity
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.WrPerformancePlanStepData
+import cn.muchinfo.rma.global.isBlankString
+import cn.muchinfo.rma.global.steptypeid
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.autoSize
+import cn.muchinfo.rma.view.autoWidget.textColorInt
+import cn.muchinfo.rma.view.autoWidget.textColorStr
+import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import mtp.polymer.com.autowidget.adapter.BaseViewHolder
+import org.jetbrains.anko.*
+
+class PerformanceDetailsViewHolder(
+    private val activity: AppCompatActivity,
+    private val viewModel: PerformanceInformationViewModel
+) : BaseViewHolder<WrPerformancePlanStepData>(activity) {
+    override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
+
+    override fun _FrameLayout.createContentView() {
+        verticalLayout {
+            data.bindOptional(context) {
+                if (it?.stepstatus == "2" || it?.stepstatus == "4" || it?.stepstatus == "5") {
+                    backgroundResource = R.drawable.performance_select_bg
+                } else {
+                    backgroundResource = R.drawable.performance_white_bg
+                }
+            }
+            linearLayout {
+                data.bindOptional(context) {
+                    if (it?.stepstatus == "3" || it?.stepstatus == "6") {
+                        backgroundResource = R.drawable.performance_title_used_bg
+                    } else if (it?.stepstatus == "2" || it?.stepstatus == "4" || it?.stepstatus == "5") {
+                        backgroundResource = R.drawable.performance_title_now_bg
+                    } else if (it?.stepstatus == "1") {
+                        backgroundResource = R.drawable.performance_title_future_bg
+                    }
+                }
+                gravity = Gravity.CENTER_VERTICAL
+                linearLayout {
+                    gravity = Gravity.CENTER
+                    backgroundResource = R.drawable.main_cercle_bg
+                    textView {
+                        data.bindOptional(context){
+                            text = dataIndex.plus(1).toString()
+                        }
+                        textSizeAuto = 27
+                        textColorStr = "#89C5FF"//已经过去的步骤颜色89C5FF 当前步骤颜色 #2794FF 未来颜色#999999
+                    }.lparams(wrapContent, wrapContent)
+                }.lparams(autoSize(43), autoSize(43)) {
+                    marginStart = autoSize(36)
+                }
+
+                textView {
+                    data.bindOptional(context) {
+                        if (it?.stepstatus == "1"){
+                            textColorStr = "#999999"
+                        }else{
+                            textColorStr = "#FFFFFF"
+                        }
+                        text = it?.steptypeid?.steptypeid() + "(" + if (it?.isauto == "0"){"不自动"}else{"自动"} + ")"
+                    }
+                    textSizeAuto = 34
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(24)
+                }
+
+                emptyView()
+
+                textView {
+                    data.bindOptional(context) {
+                        textColorStr = if (it?.stepstatus == "1"){
+                            "#999999"
+                        }else{
+                            "#FFFFFF"
+                        }
+                       if (it?.stepstatus == "1"){
+                           text = "待开始"
+                        }else if (it?.stepstatus == "2" || it?.stepstatus == "4"){
+                           text = "进行中"
+                        }else if (it?.stepstatus == "3" || it?.stepstatus == "6"){
+                           text =  "已完成"
+                        }else if (it?.stepstatus == "5"){
+                           text = "失败"
+                       }
+                    }
+                    textSizeAuto = 34
+                }.lparams(wrapContent, wrapContent){
+                    marginEnd = autoSize(36)
+                }
+            }.lparams(matchParent, autoSize(84))
+
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL
+                data.bindOptional(context){
+                    if (it?.stepstatus == "2" || it?.stepstatus == "3" || it?.stepstatus == "4" || it?.stepstatus == "6"){
+                        visibility = View.VISIBLE
+                    }else{
+                        visibility = View.INVISIBLE
+                    }
+                }
+                textView {
+                    data.bindOptional(context){
+                        text = it?.starttime
+                        if (it?.stepstatus == "3" || it?.stepstatus == "6"){
+                            textColorStr = "#999999"
+                        }else{
+                            textColorInt = R.color.white
+                        }
+                    }
+                    textSizeAuto = 29
+                }.lparams(wrapContent, wrapContent){
+                    marginStart = autoSize(24)
+                }
+
+                emptyView()
+
+                textView {
+                    data.bindOptional(context){
+                        text = it?.starttime
+                        if (it?.stepstatus == "3" || it?.stepstatus == "6"){
+                            textColorStr = "#999999"
+                        }else{
+                            textColorInt = R.color.white
+                        }
+                    }
+                    textSizeAuto = 29
+                }.lparams(wrapContent, wrapContent){
+                    marginEnd = autoSize(24)
+                }
+            }.lparams(matchParent, autoSize(70))
+
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL
+                view {
+                    data.bindOptional(context){
+                        if (it?.stepstatus == "1"){//"待开始"
+                            backgroundResource = R.drawable.performance_white_circle
+                        }else if (it?.stepstatus == "2" || it?.stepstatus == "4" || it?.stepstatus == "5"){//"进行中"
+                            backgroundResource = R.drawable.performance_blue_circle
+                        }else if (it?.stepstatus == "3" || it?.stepstatus == "6"){// "已完成"
+                            backgroundResource = R.drawable.performance_future_white_circle
+                        }
+                    }
+                }.lparams(autoSize(22), autoSize(22)){
+                    marginStart = autoSize(84)
+                }
+
+                verticalLayout {
+                    view {
+                        data.bindOptional(context){
+                            if (it?.stepstatus == "1"){//"待开始"
+                                background = resources.getDrawable(R.color.rma_gray_color)
+                            }else if (it?.stepstatus == "2" || it?.stepstatus == "4" || it?.stepstatus == "5"){//"进行中"
+                                background = resources.getDrawable(R.color.rma_blue_color)
+                            }else if (it?.stepstatus == "3" || it?.stepstatus == "6"){// "已完成"
+                                background = resources.getDrawable(R.color.rma_blue_color)
+                            }
+                        }
+                    }.lparams(matchParent, autoSize(1))
+                    linearLayout {
+                        data.bindOptional(context){
+                            if (it?.stepstatus == "2"|| it?.stepstatus == "4" || it?.stepstatus == "5"){
+                                visibility = View.VISIBLE
+                            }else{
+                                visibility = View.INVISIBLE
+                            }
+                        }
+                        gravity = Gravity.CENTER_HORIZONTAL
+                        imageView {
+                            imageResource = R.mipmap.hnst_performance
+                        }.lparams(autoSize(32), autoSize(16))
+                    }.lparams(matchParent, wrapContent)
+                }.lparams(0, wrapContent,1f){
+                    topMargin = autoSize(5)
+                }
+
+                view {
+                    data.bindOptional(context){
+                        if (it?.stepstatus == "1"){//"待开始"
+                            backgroundResource = R.drawable.performance_white_circle
+                        }else if (it?.stepstatus == "2" || it?.stepstatus == "4"  || it?.stepstatus == "5"){//"进行中"
+                            backgroundResource = R.drawable.performance_blue_circle
+                        }else if (it?.stepstatus == "3" || it?.stepstatus == "6"){// "已完成"
+                            backgroundResource = R.drawable.performance_future_white_circle
+                        }
+                    }
+                }.lparams(autoSize(22), autoSize(22)){
+                    marginEnd = autoSize(84)
+                }
+            }.lparams(matchParent, autoSize(40))
+
+            linearLayout {
+                gravity = Gravity.CENTER_HORIZONTAL
+                textView {
+                    data.bindOptional(context){
+                        if (it?.stepstatus == "2" || it?.stepstatus == "4"){
+                            visibility = View.VISIBLE
+                        }else{
+                            visibility = View.GONE
+                        }
+                        text = "剩余" + it?.remaindays + "天"
+                    }
+                    textSizeAuto = 29
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent)
+            }.lparams(matchParent, wrapContent)
+
+
+        }.lparams(matchParent, autoSize(240)) {
+            marginStart = autoSize(24)
+            marginEnd = autoSize(24)
+            topMargin = autoSize(20)
+        }
+    }
+
+
+}

+ 6 - 6
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/PerformanceInformationActivity.kt

@@ -237,10 +237,10 @@ class BuyInformationUI(private val activity : AppCompatActivity,private val view
                 statusLayout = this
                 swipeToLoadLayout {
                     swipeToLayout = this
-                    setEnableRefresh(false)
-                    setEnableLoadMore(true)
+                    setEnableRefresh(true)
+                    setEnableLoadMore(false)
                     setOnRefreshListener {
-
+                        viewModel.queryPerformancePlan()
                     }
                     setEnableScrollContentWhenLoaded(false)
                     setEnableLoadMoreWhenContentNotFull(false)
@@ -378,10 +378,10 @@ class SellInformationUI(private val activity : AppCompatActivity,private val vie
                 statusLayout = this
                 swipeToLoadLayout {
                     swipeToLayout = this
-                    setEnableRefresh(false)
-                    setEnableLoadMore(true)
+                    setEnableRefresh(true)
+                    setEnableLoadMore(false)
                     setOnRefreshListener {
-
+                        viewModel.querySellPerformancePlan()
                     }
                     setEnableScrollContentWhenLoaded(false)
                     setEnableLoadMoreWhenContentNotFull(false)

+ 19 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/PerformanceInformationViewModel.kt

@@ -46,6 +46,11 @@ class PerformanceInformationViewModel : BaseViewModel(){
     val sellPerformanceInformationDataList: MutableLiveData<List<PerformancePlanData>> = MutableLiveData()
 
     /**
+     * 履约详情信息列表
+     */
+    val wrPerformancePlanStepDataList : MutableLiveData<List<WrPerformancePlanStepData>> = MutableLiveData()
+
+    /**
      * 履约信息详情
      */
     val wrPerformancePlanStepData : MutableLiveData<WrPerformancePlanStepData> = MutableLiveData()
@@ -65,6 +70,18 @@ class PerformanceInformationViewModel : BaseViewModel(){
         }
     }
 
+    //查询具体步骤的信息的列表
+    fun queryWrPerformancePlanStepList(data : PerformancePlanData){
+        val params = mutableMapOf<String,String>().apply {
+            put("planid",data.performanceplanid ?: "")
+        }
+        MyApplication.getInstance()?.performanceManager?.queryWrPerformancePlanStep(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                wrPerformancePlanStepDataList.postValue(respData)
+            }
+        }
+    }
+
     //-----------------买履约------------------
     /**
      * 买履约头部数据
@@ -117,7 +134,7 @@ class PerformanceInformationViewModel : BaseViewModel(){
             //付款方式
             newRightData.add(if (it.paymenttype == "1"){"冻结"}else{"扣款"})
             //履约前冻结
-            newRightData.add("--")
+            newRightData.add(it.buyerfreezeamount ?: "-")
             //履约冻结剩余
             newRightData.add(if (it.buyorsell == "0"){it.buyerfreezeamountremain ?: "-"}else{it.sellerfreezeamountremain ?: "-"})
             //总金额
@@ -193,7 +210,7 @@ class PerformanceInformationViewModel : BaseViewModel(){
             //付款方式
             newRightData.add(if (it.paymenttype == "1"){"冻结"}else{"扣款"})
             //履约前冻结
-            newRightData.add("--")
+            newRightData.add(it.sellerfreezeamount ?: "-")
             //履约冻结剩余
             newRightData.add(if (it.buyorsell == "0"){it.buyerfreezeamountremain ?: "-"}else{it.sellerfreezeamountremain ?: "-"})
             //总金额

+ 5 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/performance/adapter/PerformanceInformationContentAdapter.java

@@ -27,6 +27,7 @@ import cn.muchinfo.rma.global.data.PerformancePlanData;
 import cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView;
 import cn.muchinfo.rma.view.base.hnstmain.performance.PerformanceDefaultActivity;
 import cn.muchinfo.rma.view.base.hnstmain.performance.PerformanceDelayActivity;
+import cn.muchinfo.rma.view.base.hnstmain.performance.PerformanceDetailsActivity;
 import cn.muchinfo.rma.view.base.hnstmain.performance.PerformationPayActivity;
 import cn.muchinfo.rma.view.base.procurement.RightScrollAdapter;
 
@@ -191,7 +192,10 @@ public class PerformanceInformationContentAdapter extends RecyclerView.Adapter<P
 
         //详情
         itemViewHolder.details.setOnClickListener(view -> {
-
+            Intent intent = new Intent();
+            intent.putExtra("data",data);
+            intent.setClass(context, PerformanceDetailsActivity.class);
+            ActivityUtils.startActivity(intent);
         });
 
         itemViewHolder.horItemScrollview.setEventListener(new CustomHorizontalScrollView.EventListener() {

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/spotwarehouse/SpotWareHouseViewModel.kt

@@ -516,7 +516,7 @@ class SpotWareHouseViewModel : BaseViewModel(){
             //冻结数量
             newRightData.add(it.freezerqty ?: "-" + it.enumdicname)
             //质押数量
-            newRightData.add(it.freezerqty ?: "-" + it.enumdicname)//缺少质押
+            newRightData.add("0" + it.enumdicname)//目前需求:质押数量为0
             //可用数量
             newRightData.add(it.enableqty ?: "-" + it.enumdicname)
             //仓单编号

+ 3 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/spotwarehouse/adapter/DetailsWarehouseContentAdapter.java

@@ -113,7 +113,9 @@ public class DetailsWarehouseContentAdapter extends RecyclerView.Adapter<Details
         itemViewHolder.all_click_View.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                setPosition(i);
+                if (Double.valueOf(data.getEnableqty()) > 0){
+                    setPosition(i);
+                }
             }
         });
         itemViewHolder.warehouse_register.setVisibility(View.VISIBLE);

+ 95 - 51
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/spotwarehouse/listed/ListedActivity.kt

@@ -82,10 +82,11 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
     var tradedate: String = ""
 
     //基差输入
-    lateinit var basisInputEdittext : MangeNumberEditText3
+    lateinit var basisInputEdittext: MangeNumberEditText3
 
     //初始化后基差是否被define
-    var isdefineByBasis : Boolean = false
+    var isdefineByBasis: Boolean = false
+
     //挂牌数量
     lateinit var listednumberEdittext: MangeNumberEditText2
 
@@ -96,7 +97,7 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
     lateinit var one_delisting_amount: TextView
 
     //估算单价
-    lateinit var estimate_the_price : TextView
+    lateinit var estimate_the_price: TextView
 
     //交收月
     lateinit var month_text: TextView
@@ -123,7 +124,7 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
     var marginValue = 0.0//履约保证金比例
 
     //浮动价挂牌金额
-    val listed_price : MutableLiveData<Double> = MutableLiveData()
+    val listed_price: MutableLiveData<Double> = MutableLiveData()
 
     //初始化设置履约保证金比例
     fun setMarginValue() {
@@ -143,17 +144,17 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
     fun onQuoteMessageEvent(quoteMessageEvent: QuoteMessageEvent) {
         val goodsids = quoteMessageEvent.goodsid
         //如果推送的goodsid包含当前页面的goodsid,则进行页面刷新
-        if (selectGoodsInfo.value?.id.isNullOrEmpty().not()){
-             if (goodsids.contains(selectGoodsInfo.value?.id?.toInt())) {
-            LogUtils.eTag("BusinessHallActivity", "行情推送" + selectGoodsInfo.value?.id)
-            val quote =
-                GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find { selectGoodsInfo.value?.value == it.outgoodscode }?.quoteDayData
-            if (quote != null) {
-                //赋值盘面信息
-                viewModel.quoteDayData.postValue(quote)
+        if (selectGoodsInfo.value?.id.isNullOrEmpty().not()) {
+            if (goodsids.contains(selectGoodsInfo.value?.id?.toInt())) {
+                LogUtils.eTag("BusinessHallActivity", "行情推送" + selectGoodsInfo.value?.id)
+                val quote =
+                    GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find { selectGoodsInfo.value?.value == it.outgoodscode }?.quoteDayData
+                if (quote != null) {
+                    //赋值盘面信息
+                    viewModel.quoteDayData.postValue(quote)
+                }
             }
         }
-        }
 
     }
 
@@ -171,11 +172,16 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
         verticalLayout {
             createLoadingDialog(hintStr = "").bindTaskStatus(context, viewModel.loadingDialogStatus)
             setMarginValue()
+            viewModel.resetAccountData()
             initData()
-            viewModel.quoteDayData.bindOptional(context){
+            viewModel.quoteDayData.bindOptional(context) {
                 //行情下发计算挂牌金额 = (基差价格+期货合约价)* 挂牌数量
-                if (isdefineByBasis && basisInputEdittext.text.toString().isNullOrEmpty().not()  && basisInputEdittext.text.toString() != "-"){//初始化相应控件后才能取值计算
-                    listed_price.postValue(basisInputEdittext.text.toString().toDouble().plus(it?.getPrice() ?: 0.0))
+                if (isdefineByBasis && basisInputEdittext.text.toString().isNullOrEmpty()
+                        .not() && basisInputEdittext.text.toString() != "-"
+                ) {//初始化相应控件后才能取值计算
+                    listed_price.postValue(
+                        basisInputEdittext.text.toString().toDouble().plus(it?.getPrice() ?: 0.0)
+                    )
                 }
             }
             background = resources.getDrawable(R.color.white)
@@ -286,7 +292,7 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                                         value = "浮动价"
                                     )
                                 )
-                                creatBottomSheetDialog("请选择合同类型", selectDataList) {
+                                creatBottomSheetDialog("请选择挂牌方式", selectDataList) {
                                     listedType.postValue(this)
                                 }
                             }
@@ -344,11 +350,11 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                                         selectGoodsInfo.postValue(
                                             SelectData(
                                                 id = opt2tx?.autoId ?: "",
-                                                value = opt2tx?.name ?: ""
+                                                value = opt2tx?.code ?: ""
                                             )
                                         )
                                     })
-                                    .setTitleText("定投策略选择")
+                                    .setTitleText("行情商品")
                                     .setDividerColor(Color.BLACK)
                                     .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                                     .setContentTextSize(20)
@@ -374,7 +380,11 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                             textView {
                                 selectGoodsInfo.bindOptional(context) {
                                     viewModel.removeSubscriptQuote(thisTag)
-                                    viewModel.queryQuoteDay(tag = thisTag,goodsCodes = it?.value ?: "",isShowLoading = false)
+                                    viewModel.queryQuoteDay(
+                                        tag = thisTag,
+                                        goodsCodes = it?.value ?: "",
+                                        isShowLoading = false
+                                    )
                                     text = it?.value
                                     textColorInt = R.color.rma_black_33
                                 }
@@ -456,15 +466,19 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                                 basisInputEdittext = this
                                 text = "1"
                                 setOnTextChangeListener { view, value ->
-                                    if (value.isNullOrEmpty().not()){
-                                        if (type == "1"){
+                                    if (value.isNullOrEmpty().not()) {
+                                        if (type == "1") {
                                             estimate_the_price.text = data.enableqty
-                                        }else{
+                                        } else {
 
                                         }
-                                        if (value.isNotEmpty()){
+                                        if (value.isNotEmpty()) {
                                             //行情下发计算挂牌金额 = (基差价格+期货合约价)* 挂牌数量
-                                            listed_price.postValue(value.toString().toDouble().plus(viewModel.quoteDayData.value?.getPrice() ?: 0.0))
+                                            listed_price.postValue(
+                                                value.toString().toDouble().plus(
+                                                    viewModel.quoteDayData.value?.getPrice() ?: 0.0
+                                                )
+                                            )
                                         }
                                     }
                                 }
@@ -497,26 +511,44 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                                         text = "1"
                                         setOnTextChangeListener { view, value ->
                                             if (value.isNullOrEmpty().not()) {
-                                                if (listedType.value?.id == "1"){//一口价
+                                                if (listedType.value?.id == "1") {//一口价
                                                     val delistingAmount = value.toDouble().times(
-                                                        onePriceInputEdittext.text.toShort().toDouble()
+                                                        onePriceInputEdittext.text.toShort()
+                                                            .toDouble()
                                                     )
-                                                    one_delisting_amount.text = NumberUtils.roundNum(
-                                                        delistingAmount,
-                                                        2
-                                                    ) + "(需履约保证金" + NumberUtils.roundNum(
-                                                        delistingAmount?.times(
-                                                            marginValue
-                                                        ) ?: 0.0, 2
-                                                    ) + ")"
-                                                }else if (listedType.value?.id == "2"){//浮动价 //计算估算总额
-                                                    val floatDelistingAmount = listed_price.value?.times(value.toString().toDouble())
-                                                    if (floatDelistingAmount != 0.0){
+                                                    one_delisting_amount.text =
+                                                        NumberUtils.roundNum(
+                                                            delistingAmount,
+                                                            2
+                                                        ) + "(需履约保证金" + NumberUtils.roundNum(
+                                                            delistingAmount?.times(
+                                                                marginValue
+                                                            ) ?: 0.0, 2
+                                                        ) + ")"
+                                                } else if (listedType.value?.id == "2") {//浮动价 //计算估算总额
+                                                    val floatDelistingAmount =
+                                                        listed_price.value?.times(
+                                                            value.toString().toDouble()
+                                                        )
+                                                    if (floatDelistingAmount != 0.0) {
                                                         //显示估算总额
-                                                        if (marginValue == 0.0){
-                                                            one_delisting_amount.text = NumberUtils.roundNum(floatDelistingAmount ?: 0.0,2)
-                                                        }else{
-                                                            one_delisting_amount.text = NumberUtils.roundNum(floatDelistingAmount ?: 0.0,2) + "(需履约保证金" + NumberUtils.roundNum(floatDelistingAmount?.times(marginValue) ?: 0.0,2) + ")"
+                                                        if (marginValue == 0.0) {
+                                                            one_delisting_amount.text =
+                                                                NumberUtils.roundNum(
+                                                                    floatDelistingAmount ?: 0.0,
+                                                                    2
+                                                                )
+                                                        } else {
+                                                            one_delisting_amount.text =
+                                                                NumberUtils.roundNum(
+                                                                    floatDelistingAmount ?: 0.0,
+                                                                    2
+                                                                ) + "(需履约保证金" + NumberUtils.roundNum(
+                                                                    floatDelistingAmount?.times(
+                                                                        marginValue
+                                                                    ) ?: 0.0,
+                                                                    2
+                                                                ) + ")"
                                                         }
                                                     }
                                                 }
@@ -527,7 +559,7 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                                     }
 
                                     textView {
-                                        text = "吨"
+                                        text = data.enumdicname
                                         textSizeAuto = 34
                                         textColorInt = R.color.rma_hint_text_color_ccc
                                     }.lparams(wrapContent, wrapContent) {
@@ -588,9 +620,9 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
 
                                     textView {
                                         if (type == "1") {
-                                            text = data.enableqty + "吨"
+                                            text = data.enableqty + data.enumdicname
                                         } else {
-                                            text = data1.credittotalqty + "吨"
+                                            text = data1.enalbeqty + data.enumdicname
                                         }
                                         textSizeAuto = 29
                                         textColorInt = R.color.rma_gray_color
@@ -632,7 +664,7 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                                     }.lparams(0, autoSize(132), 1f)
 
                                     textView {
-                                        text = "吨"
+                                        text = data.enumdicname
                                         textSizeAuto = 31
                                         textColorInt = R.color.rma_black_33
                                     }.lparams(wrapContent, wrapContent) {
@@ -673,8 +705,8 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
 
                             textView {
                                 text = "--"
-                                listed_price.bindOptional(context){
-                                    text = NumberUtils.roundNum(it ?: 0.0,2)
+                                listed_price.bindOptional(context) {
+                                    text = NumberUtils.roundNum(it ?: 0.0, 2)
                                 }
                                 estimate_the_price = this
                                 textSizeAuto = 34
@@ -708,6 +740,18 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                             }.lparams(wrapContent, wrapContent)
                         }.lparams(matchParent, autoSize(143))
 
+                        textView {
+                            viewModel.usedAccountData.bindOptional(context) {
+                                text =
+                                    "可用资金" + NumberUtils.roundNum(it?.canUserAmount.toString(), 2)
+                            }
+                            textSizeAuto = 29
+                            textColorInt = R.color.rma_black_33
+                        }.lparams(wrapContent, wrapContent) {
+                            topMargin = autoSize(20)
+                            marginStart = autoSize(250)
+                        }
+
                         linearLayout {
                             if (type == "2") {
                                 visibility = View.VISIBLE
@@ -854,7 +898,7 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                                         LadingBillId = 0,
                                         TradeDate = TimeUtils.getNowTime("yyyyMMdd"),
                                         SubNum = 0,
-                                        WRFactorTypeId = 0,
+                                        WRFactorTypeId = data1.wrfactortypeid?.toLong() ?: 0,
                                         UserID = GlobalDataCollection.instance?.loginRsp?.userID
                                             ?: 0,
                                         AccountID = GlobalDataCollection.instance?.accountId ?: 0,
@@ -937,7 +981,7 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                 ToastUtils.showLong("请输入起摘数量")
                 return false
             }
-            if (startInputNumber.text.toString().toLong() < data.minivalue?.toLong() ?: 0){
+            if (startInputNumber.text.toString().toLong() < data.minivalue?.toLong() ?: 0) {
                 ToastUtils.showLong("起摘数量不能小于" + data.minivalue)
                 return false
             }
@@ -973,7 +1017,7 @@ class ListedActivity : BaseActivity<ListedViewModel>() {
                 ToastUtils.showLong("请输入起摘数量")
                 return false
             }
-            if (startInputNumber.text.toString().toLong() < data.minivalue?.toLong() ?: 0){
+            if (startInputNumber.text.toString().toLong() < data.minivalue?.toLong() ?: 0) {
                 ToastUtils.showLong("起摘数量不能小于" + data.minivalue)
                 return false
             }

+ 20 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/spotwarehouse/listed/ListedViewModel.kt

@@ -2,6 +2,7 @@ package cn.muchinfo.rma.view.base.hnstmain.spotwarehouse.listed
 
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.AccountData
 import cn.muchinfo.rma.global.data.GoodsGroupData
 import cn.muchinfo.rma.global.data.QuoteDayData
 import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsGroups
@@ -37,6 +38,22 @@ class ListedViewModel : BaseViewModel(){
     val quoteDayData: MutableLiveData<QuoteDayData> = MutableLiveData()
 
     /**
+     * 当前选择的资金账户
+     */
+    val usedAccountData : MutableLiveData<AccountData> = MutableLiveData()
+
+    //重新赋值资金账户
+    fun resetAccountData(){
+        val accountDataList = GlobalDataCollection.instance?.accountDataList
+        if (accountDataList.isNullOrEmpty().not()) {
+            val accountData = GlobalDataCollection.instance?.accountData
+            accountData?.clearData()
+            accountData?.setNormalData()
+            usedAccountData.postValue(accountData)
+        }
+    }
+
+    /**
      * 请求盘面信息
      * @param first Int
      * @param last Int
@@ -129,9 +146,10 @@ class ListedViewModel : BaseViewModel(){
                 if (it?.goodsgroupid == data.goodsgroupid){
                     val jsonSonBean = JsonBean.CityBean()
                     jsonSonBean.autoId = it.goodsid.toString()
-                    jsonSonBean.name = it.goodscode
+                    jsonSonBean.name = it.goodsname
+                    jsonSonBean.code = it.goodscode
                     goodsList.add(jsonSonBean)
-                    selectGoodsCode.add(it.goodscode)
+                    selectGoodsCode.add(it.goodsname)
                 }
             }
             selectGoodsName.add(selectGoodsCode)

+ 3 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerViewModel.kt

@@ -51,6 +51,7 @@ class AccountManagerViewModel : BaseViewModel(){
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "1")
+            put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params){isSuccess, respData, error ->
             if (isSuccess){
@@ -65,6 +66,7 @@ class AccountManagerViewModel : BaseViewModel(){
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "2")
+            put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params){isSuccess, respData, error ->
             if (isSuccess){
@@ -79,6 +81,7 @@ class AccountManagerViewModel : BaseViewModel(){
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "3")
+            put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params){isSuccess, respData, error ->
             if (isSuccess){

+ 1 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/FutureAccountViewModel.kt

@@ -211,6 +211,7 @@ class FutureAccountViewModel : BaseViewModel(){
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "2")
+            put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params){isSuccess, respData, error ->
             if (isSuccess){

+ 2 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractViewModel.kt

@@ -120,6 +120,7 @@ class ContractViewModel : BaseViewModel() {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "2")
+            put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
@@ -191,6 +192,7 @@ class ContractViewModel : BaseViewModel() {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "1")
+            put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
             if (isSuccess) {

+ 1 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanViewModel.kt

@@ -64,6 +64,7 @@ class HedgePlanViewModel : BaseViewModel() {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "2")
+            put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params){isSuccess, respData, error ->
             if (isSuccess){

+ 5 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/ReportQueryViewModel.kt

@@ -517,6 +517,7 @@ class ReportQueryViewModel : BaseViewModel() {
             val params = mutableMapOf<String, String>().apply {
                 put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
                 put("querytype", "2")
+                put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
             }
             MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
                 if (isSuccess) {
@@ -561,6 +562,7 @@ class ReportQueryViewModel : BaseViewModel() {
             val params = mutableMapOf<String, String>().apply {
                 put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
                 put("querytype", "2")
+                put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
             }
             MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
                 if (isSuccess) {
@@ -606,6 +608,7 @@ class ReportQueryViewModel : BaseViewModel() {
             val params = mutableMapOf<String, String>().apply {
                 put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
                 put("querytype", "2")
+                put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
             }
             MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
                 if (isSuccess) {
@@ -649,6 +652,7 @@ class ReportQueryViewModel : BaseViewModel() {
             val params = mutableMapOf<String, String>().apply {
                 put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
                 put("querytype", "2")
+                put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
             }
             MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
                 if (isSuccess) {
@@ -692,6 +696,7 @@ class ReportQueryViewModel : BaseViewModel() {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "2")
+            put("usertype",GlobalDataCollection.instance?.loginQueryData?.userInfo?.usertype.toString())
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
             if (isSuccess) {

+ 9 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/JsonBean.java

@@ -50,15 +50,20 @@ public class JsonBean implements IPickerViewData {
 
 
     public static class CityBean {
-        /**
-         * name : 城市 / 日期或者周几
-         * area : ["东城区","西城区","崇文区","昌平区"]     ["一号","二号"]或者 ["周一","周二"]
-         */
 
+        private String code;
         private String name;
         private String autoId;
         private List<String> area;
 
+        public String getCode() {
+            return code;
+        }
+
+        public void setCode(String code) {
+            this.code = code;
+        }
+
         public String getAutoId() {
             return autoId;
         }

+ 37 - 26
RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/BusinessHallActivity.kt

@@ -692,10 +692,14 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
         /*** 一口价摘牌金额 **/
         lateinit var one_seekbar: SeekBar
 
+        /** 最大可摘数量 **/
+        val maxpickNumber : MutableLiveData<Double> = MutableLiveData()
+
         var marginValue = 0.0//履约保证金比例
 
         //初始化设置履约保证金比例
         fun setMarginValue() {
+            maxpickNumber.postValue(buySelldata.orderqty?.toDouble())
             if (buySelldata.buyorsell == "0") {//买单是摘卖-用卖方履约保证金比例
                 if (type == "1") {//有仓单的卖履约保证金
                     marginValue =
@@ -787,7 +791,8 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                     textView {
                         text = "请选择现货仓单"
                         selectSpotDetailsData.bindOptional(context) {
-                            text = it?.deliverygoodsname
+                            maxpickNumber.postValue(Math.min(it?.enableqty?.toDouble()?:0.0,buySelldata?.orderqty?.toDouble() ?: 0.0))
+                            text = it?.wrfactortypeid + "(" + it?.enableqty + it?.enumdicname + ")"
                         }
                         textSizeAuto = 34
                         textColorInt = R.color.rma_black_33
@@ -878,8 +883,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                         }
 
                         textView {
-                            visibility = View.GONE
-                            text = "(10吨起)"
+                            text = data.minivalue + "(" +data.enumdicname +"起)"
                             textSizeAuto = 29
                             textColorInt = R.color.rma_hint_text_color_ccc
                         }.lparams(wrapContent, wrapContent) {
@@ -938,7 +942,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                             setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
                                 override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
                                     onePriceInputNumberEdittext.text = NumberUtils.roundNum(
-                                        buySelldata.orderqty?.toDouble()?.times(p1.div(100.0))
+                                        maxpickNumber.value?.times(p1.div(100.0))
                                             .toString(), 0
                                     )
                                 }
@@ -966,7 +970,9 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                             emptyView()
 
                             textView {
-                                text = buySelldata.orderqty + data.enumdicname
+                                maxpickNumber.bindOptional(context){
+                                    text = it.toString() + data.enumdicname
+                                }
                                 textSizeAuto = 29
                                 textColorInt = R.color.rma_gray_color
                             }.lparams(wrapContent, wrapContent)
@@ -1019,8 +1025,8 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                                     .isNullOrEmpty() || onePriceInputNumberEdittext.text.toString()
                                     .toDouble() == 0.0
                             ) {
-                                return@onThrottleFirstClick
                                 ToastUtils.showLong("请输入摘牌数量")
+                                return@onThrottleFirstClick
                             }
 
                             if (buySelldata.buyorsell == "0") {
@@ -1116,8 +1122,6 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                                     }
                                 }
                             }
-
-
                         }
                         gravity = Gravity.CENTER
                         backgroundResource = R.drawable.qhj_main_blue_bg
@@ -1155,6 +1159,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
     }
 
     //浮动价 摘牌
+    @SuppressLint("SetTextI18n")
     @RequiresApi(Build.VERSION_CODES.O)
     fun creatFloatSellOrBuyDialog(
         type: String,
@@ -1175,6 +1180,9 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
         /*** 浮动价价摘牌金额 **/
         lateinit var float_delisting_amount: TextView
 
+        /** 最大可摘数量 **/
+        val maxpickNumber : MutableLiveData<Double> = MutableLiveData()
+
         /*** 一口价摘牌金额 **/
         lateinit var one_seekbar: SeekBar
 
@@ -1184,9 +1192,6 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
         //估算总价
         lateinit var float_total_price : TextView
 
-        //挂牌最大数量
-        val maxlistedNumber : MutableLiveData<Int> = MutableLiveData()
-
         //浮动价挂牌金额
         val listed_price : MutableLiveData<Double> = MutableLiveData()
 
@@ -1194,8 +1199,8 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
 
         //初始化设置履约保证金比例 /
         fun setMarginValue() {
+            maxpickNumber.postValue(buySelldata.orderqty?.toDouble())
             if (buySelldata.buyorsell == "0") {//买单是摘卖-用卖方履约保证金比例
-                maxlistedNumber.postValue(buySelldata.orderqty?.toInt())//摘卖时最大数量赋值
                 if (type == "1") {//有仓单的卖履约保证金
                     marginValue =
                         GlobalDataCollection.instance?.marketTradeConfigData?.sellmarginvalue?.toDouble()
@@ -1292,7 +1297,8 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                     textView {
                         text = "请选择现货仓单"
                         selectSpotDetailsData.bindOptional(context) {
-                            text = it?.deliverygoodsname
+                            maxpickNumber.postValue(Math.min(it?.enableqty?.toDouble() ?: 0.0,buySelldata.orderqty?.toDouble() ?: 0.0))
+                            text = it?.wrfactortypeid + "(" + it?.enableqty + it?.enumdicname + ")"
                         }
                         textSizeAuto = 34
                         textColorInt = R.color.rma_black_33
@@ -1383,7 +1389,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                         }
 
                         textView {
-                            text = "(10吨起)"
+                            text = data.minivalue + "(" +data.enumdicname +"起)"
                             textSizeAuto = 29
                             textColorInt = R.color.rma_hint_text_color_ccc
                         }.lparams(wrapContent, wrapContent) {
@@ -1398,8 +1404,8 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                             numberEditText {
                                 text = "1"
                                 listednumberEdittext = this
-                                maxlistedNumber.bindOptional(context){
-                                    max = it?.toDouble() ?: 1.0
+                                maxpickNumber.bindOptional(context){
+                                    max = it ?: 1.0
                                 }
                                 setOnTextChangeListener { view, value ->
                                     listed_price.postValue(listed_price.value)
@@ -1428,7 +1434,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                             setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
                                 override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
                                     listednumberEdittext.text = NumberUtils.roundNum(
-                                        buySelldata.orderqty?.toDouble()?.times(p1.div(100.0))
+                                        maxpickNumber.value?.times(p1.div(100.0))
                                             ?: 0.0, 0
                                     )
                                 }
@@ -1457,7 +1463,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                             emptyView()
 
                             textView {
-                                maxlistedNumber.bindOptional(context){
+                                maxpickNumber.bindOptional(context){
                                     text = it.toString() + data.enumdicname
                                 }
                                 textSizeAuto = 29
@@ -1491,9 +1497,9 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                             if (it != 0.0 && marginValue != 0.0){
                                 val maxNumberByMoney = viewModel.usedAccountData.value?.canUserAmount?.div(it ?: 1.0)?.div(marginValue)
                                 if (maxNumberByMoney ?: 0.0 > buySelldata.orderqty?.toDouble() ?: 0.0){
-                                    maxlistedNumber.postValue(buySelldata.orderqty?.toInt())
+                                    maxpickNumber.postValue(buySelldata.orderqty?.toDouble())
                                 }else{
-                                    maxlistedNumber.postValue(maxNumberByMoney?.toInt())
+                                    maxpickNumber.postValue(maxNumberByMoney?.toDouble())
                                 }
                             }
                             text = NumberUtils.roundNum(it ?: 0.0, 2)
@@ -1564,8 +1570,8 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                                     .isNullOrEmpty() || listednumberEdittext.text.toString()
                                     .toDouble() == 0.0
                             ) {
-                                return@onThrottleFirstClick
                                 ToastUtils.showLong("请输入摘牌数量")
+                                return@onThrottleFirstClick
                             }
 
                             if (buySelldata.buyorsell == "0") {
@@ -1721,12 +1727,15 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
         //履约保证金
         lateinit var performance_bond_amount: TextView
 
+        /** 最大可摘数量 **/
+        val maxpickNumber : MutableLiveData<Double> = MutableLiveData()
+
         lateinit var one_seekbar: SeekBar
 
         createCustomDialog(cancelable = false) { dialog ->
             selectAccountData.postValue(GlobalDataCollection.instance?.accountData)
             backgroundColor = Color.parseColor("#5f000000")
-
+            maxpickNumber.postValue(buyOrSelldata.orderqty?.toDouble())
             verticalLayout {
                 backgroundDrawable = createRoundRectDrawable("#ffffff", 24)
                 linearLayout {
@@ -1872,7 +1881,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                         }
 
                         textView {
-                            text = "(10吨起)"
+                            text = data.minivalue + "(" +data.enumdicname +"起)"
                             textSizeAuto = 29
                             textColorInt = R.color.rma_hint_text_color_ccc
                         }.lparams(wrapContent, wrapContent) {
@@ -1894,7 +1903,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                                                 ?.times(value.toString().toDouble()) ?: 0.0, 2
                                         )
                                         one_seekbar.progress = value.toDouble()
-                                            .div(buyOrSelldata.orderqty?.toDouble() ?: 0.0)
+                                            .div(maxpickNumber.value ?: 0.0)
                                             .times(100).toInt()
                                     }
                                 }
@@ -1922,7 +1931,7 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                             setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
                                 override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
                                     onePriceInputNumberEdittext.text = NumberUtils.roundNum(
-                                        buyOrSelldata.orderqty?.toDouble()?.times(p1.div(100.0))
+                                        maxpickNumber.value?.times(p1.div(100.0))
                                             ?: 0.0, 0
                                     )
                                 }
@@ -1950,7 +1959,9 @@ class BusinessHallActivity : BaseActivity<BusinessHallViewModel>() {
                             emptyView()
 
                             textView {
-                                text = buyOrSelldata.orderqty + data.goodscode
+                                maxpickNumber.bindOptional(context){
+                                    text = it?.toString() + data.enumdicname
+                                }
                                 textSizeAuto = 29
                                 textColorInt = R.color.rma_gray_color
                             }.lparams(wrapContent, wrapContent)

+ 5 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/FloatListedDialog.kt

@@ -1,5 +1,6 @@
 package cn.muchinfo.rma.view.base.warehousereceipt
 
+import android.annotation.SuppressLint
 import android.graphics.Color
 import android.os.Build
 import android.view.Gravity
@@ -220,6 +221,7 @@ class FloatSellListedUI(
         }
     }
 
+    @SuppressLint("SetTextI18n")
     @RequiresApi(Build.VERSION_CODES.O)
     val root = _FrameLayout(activity).apply {
         verticalLayout {
@@ -287,7 +289,7 @@ class FloatSellListedUI(
                 textView {
                     text = "请选择现货仓单"
                     selectSpotDetailsData.bindOptional(context){
-                        text = it?.deliverygoodsname
+                        text = it?.wrfactortypeid + "(" + it?.enableqty + it?.enumdicname + ")"
                     }
                     textSizeAuto = 34
                     textColorInt = R.color.rma_black_33
@@ -571,7 +573,7 @@ class FloatSellListedUI(
                             return@onThrottleFirstClick
                         }
 
-                        if (startInputNumber.text.toString().isNotEmpty()) {
+                        if (startInputNumber.text.toString().isNullOrEmpty()) {
                             ToastUtils.showLong("请输入起摘数量")
                             return@onThrottleFirstClick
                         }
@@ -1037,7 +1039,7 @@ class FloatBuyListedUI(
                             return@onThrottleFirstClick
                         }
 
-                        if (startInputNumber.text.toString().isNotEmpty()) {
+                        if (startInputNumber.text.toString().isNullOrEmpty()) {
                             ToastUtils.showLong("请输入起摘数量")
                             return@onThrottleFirstClick
                         }

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/OneListedDialog.kt

@@ -273,7 +273,7 @@ class OneSellListedUI(
                 textView {
                     text = "请选择现货仓单"
                     selectSpotDetailsData.bindOptional(context) {
-                        text = it?.ladingbillid + "(" + it?.enableqty + it?.enumdicname + ")"
+                        text = it?.wrfactortypeid + "(" + it?.enableqty + it?.enumdicname + ")"
                     }
                     textSizeAuto = 34
                     textColorInt = R.color.rma_black_33
@@ -552,7 +552,7 @@ class OneSellListedUI(
                             return@onThrottleFirstClick
                         }
 
-                        if (startInputNumber.text.toString().isNotEmpty()) {
+                        if (startInputNumber.text.toString().isNullOrEmpty()) {
                             ToastUtils.showLong("请输入起摘数量")
                             return@onThrottleFirstClick
                         }
@@ -996,7 +996,7 @@ class OneBuyListedUI(
                             return@onThrottleFirstClick
                         }
 
-                        if (startInputNumber.text.toString().isNotEmpty()) {
+                        if (startInputNumber.text.toString().isNullOrEmpty()) {
                             ToastUtils.showLong("请输入起摘数量")
                             return@onThrottleFirstClick
                         }

+ 16 - 0
RMA/app/src/main/res/drawable/performance_blue_circle.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval"
+    android:useLevel="false">
+  <solid android:color="#2794FF"></solid>
+  <size
+      android:width="15dp"
+      android:height="15dp"></size>
+  <padding
+      android:bottom="1dp"
+      android:left="2dp"
+      android:right="2dp"
+      android:top="1dp"></padding>
+
+</shape>
+

+ 19 - 0
RMA/app/src/main/res/drawable/performance_future_white_circle.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval"
+    android:useLevel="false">
+  <stroke
+      android:color="#CCCCCC"
+      android:width="0.5dp" />
+  <solid android:color="#ffffff"></solid>
+  <size
+      android:width="15dp"
+      android:height="15dp"></size>
+  <padding
+      android:bottom="1dp"
+      android:left="2dp"
+      android:right="2dp"
+      android:top="1dp"></padding>
+
+</shape>
+

+ 9 - 0
RMA/app/src/main/res/drawable/performance_select_bg.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <stroke
+        android:color="#2794FF"
+        android:width="3dp" />
+    <solid android:color="@color/white"/>
+    <corners android:radius="10dp"/>
+</shape>

+ 7 - 0
RMA/app/src/main/res/drawable/performance_title_future_bg.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#DDE3E8"/>
+    <corners android:topLeftRadius="10dp"
+        android:topRightRadius="10dp"/>
+</shape>

+ 7 - 0
RMA/app/src/main/res/drawable/performance_title_now_bg.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#2794FF"/>
+    <corners android:topLeftRadius="10dp"
+        android:topRightRadius="10dp"/>
+</shape>

+ 7 - 0
RMA/app/src/main/res/drawable/performance_title_used_bg.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#89C5FF"/>
+    <corners android:topLeftRadius="10dp"
+        android:topRightRadius="10dp"/>
+</shape>

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

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

+ 19 - 0
RMA/app/src/main/res/drawable/performance_white_circle.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval"
+    android:useLevel="false">
+  <stroke
+      android:color="#2794FF"
+      android:width="0.5dp" />
+  <solid android:color="#ffffff"></solid>
+  <size
+      android:width="15dp"
+      android:height="15dp"></size>
+  <padding
+      android:bottom="1dp"
+      android:left="2dp"
+      android:right="2dp"
+      android:top="1dp"></padding>
+
+</shape>
+

+ 152 - 0
RMA/app/src/main/res/layout/finance_layout_item_content.xml

@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:id="@+id/roots_view"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/all_click_View"
+        android:layout_width="match_parent"
+        android:orientation="horizontal"
+        android:layout_height="55dp">
+
+        <LinearLayout
+            android:layout_width="110dp"
+            android:orientation="horizontal"
+            android:layout_height="match_parent">
+            <LinearLayout
+                android:gravity="center_vertical"
+                android:orientation="vertical"
+                android:layout_width="95dp"
+                android:layout_height="match_parent">
+
+                <TextView
+                    android:layout_marginStart="7dp"
+                    android:id="@+id/tv_left_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textSize="13sp"
+                    android:textColor="#333333" />
+                <TextView
+                    android:layout_marginStart="7dp"
+                    android:id="@+id/tv_left_bottom_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textSize="10sp"
+                    android:textColor="#333333" />
+            </LinearLayout>
+            <ImageView
+                android:id="@+id/click_icon"
+                android:layout_gravity="center_vertical"
+                android:layout_width="15dp"
+                android:layout_height="15dp"
+                android:src="@mipmap/rma_down"/>
+
+        </LinearLayout>
+
+        <cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView
+            android:id="@+id/hor_item_scrollview"
+            android:overScrollMode="never"
+            android:scrollbars="none"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/rv_item_right"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:overScrollMode="never"
+                    android:scrollbars="none">
+
+                </androidx.recyclerview.widget.RecyclerView>
+            </RelativeLayout>
+        </cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView>
+    </LinearLayout>
+
+    <LinearLayout
+        android:visibility="gone"
+        android:id="@+id/all_view"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:gravity="end|center_vertical"
+        android:orientation="horizontal">
+
+        <TextView
+            android:visibility="gone"
+            android:id="@+id/invoice_register"
+            android:layout_marginEnd="10dp"
+            android:gravity="center"
+            android:textSize="12sp"
+            android:layout_width="90dp"
+            android:layout_height="25dp"
+            android:text="撤单"
+            android:textColor="@color/rma_blue_color"
+            android:background="@drawable/rma_item_click_bg"/>
+
+<!--        挂牌-->
+        <TextView
+            android:visibility="gone"
+            android:id="@+id/warehouse_register"
+            android:layout_marginEnd="10dp"
+            android:gravity="center"
+            android:textSize="12sp"
+            android:layout_width="70dp"
+            android:layout_height="25dp"
+            android:text="回购仓单"
+            android:textColor="@color/rma_blue_color"
+            android:background="@drawable/rma_item_click_bg"/>
+
+        <!--       提货-->
+        <TextView
+            android:visibility="gone"
+            android:id="@+id/fanacel_register"
+            android:layout_marginEnd="10dp"
+            android:gravity="center"
+            android:textSize="12sp"
+            android:layout_width="70dp"
+            android:layout_height="25dp"
+            android:text="支付欠款"
+            android:textColor="@color/rma_blue_color"
+            android:background="@drawable/rma_item_click_bg"/>
+
+
+        <TextView
+            android:visibility="gone"
+            android:id="@+id/spot_details"
+            android:layout_marginEnd="10dp"
+            android:gravity="center"
+            android:textSize="12sp"
+            android:layout_width="70dp"
+            android:layout_height="25dp"
+            android:text="延期"
+            android:textColor="@color/rma_blue_color"
+            android:background="@drawable/rma_item_click_bg"/>
+
+        <TextView
+            android:visibility="gone"
+            android:id="@+id/details"
+            android:layout_marginEnd="10dp"
+            android:gravity="center"
+            android:textSize="12sp"
+            android:layout_width="40dp"
+            android:layout_height="25dp"
+            android:text="详情"
+            android:textColor="@color/rma_blue_color"
+            android:background="@drawable/rma_item_click_bg"/>
+
+        <ImageView
+            android:visibility="gone"
+            android:id="@+id/load_more"
+            android:layout_marginEnd="10dp"
+            android:layout_width="25dp"
+            android:layout_height="25dp"
+            android:src="@mipmap/rma_more_one"/>
+
+    </LinearLayout>
+
+</LinearLayout>

二進制
RMA/app/src/main/res/mipmap-xhdpi/hnst_performance.png


二進制
RMA/app/src/main/res/mipmap-xhdpi/yrdz_finance_bg.png


部分文件因文件數量過多而無法顯示