Bläddra i källkod

风险管理5月27日提交代码-liu.bolan——部分千海金代码

Liu.bolan 4 år sedan
förälder
incheckning
ca0c0affda
43 ändrade filer med 1522 tillägg och 269 borttagningar
  1. 10 3
      RMA/app/build.gradle
  2. BIN
      RMA/app/libs/InfoCollection_single_release_v1.5-2019-08-01.aar
  3. BIN
      RMA/app/libs/InfoCollection_single_release_v1.7-2020-09-23.aar
  4. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt
  5. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/global/StringUtils.kt
  6. 11 2
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/AccMgrTaaccountData.kt
  7. 50 3
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/RealExposureData.kt
  8. 4 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainActivity.kt
  9. 6 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  10. 10 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/exposure/ExposureViewModel.kt
  11. 4 5
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/HomeFragment.kt
  12. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/AccountManagerViewHolder.kt
  13. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/AccountUserViewHolder.kt
  14. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/FutureManagerViewHolder.kt
  15. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/FutureUserViewHolder.kt
  16. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/bussinessaccount/TradingManagerViewHolder.kt
  17. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/bussinessaccount/TradingUserViewHolder.kt
  18. 61 12
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/AddFutureAccountActivity.kt
  19. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/manageaccount/ManagerAccountViewHolder.kt
  20. 7 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/business/BusinessManagementViewholder.kt
  21. 9 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/viewholder/AddSpotCategoryViewHolder.kt
  22. 5 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/AddContractActivity.kt
  23. 423 69
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractActivity.kt
  24. 183 51
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractViewModel.kt
  25. 340 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/adapter/ContractAdapter.java
  26. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/AddCustomerDataActivity.kt
  27. 85 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/CustomerDataDetailsActivity.kt
  28. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/CustomerDataViewHolder.kt
  29. 0 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgeDetailsActivity.kt
  30. 38 18
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanActivity.kt
  31. 26 12
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanViewHolder.kt
  32. 6 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventoryaudit/BuySellInventoryActivity.kt
  33. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventoryaudit/InventoryContentAdapter.java
  34. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventoryaudit/ProductionInventoryActivity.kt
  35. 15 13
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventorymanager/InventoryManagerViewModel.kt
  36. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventorymanager/adapter/InventoryCurrentAdapter.java
  37. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/registration/RegistrationViewModel.kt
  38. 10 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddRoleActivity.kt
  39. 3 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/spotmarket/SpotMarketPriceViewHolder.kt
  40. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/warehouse/WarehouseInformationViewHolder.kt
  41. 2 2
      RMA/app/src/main/res/layout/layout_item_content.xml
  42. 162 0
      RMA/app/src/main/res/layout/layout_item_contract.xml
  43. 29 19
      RMA/app/src/main/res/layout/layout_item_inventory_current.xml

+ 10 - 3
RMA/app/build.gradle

@@ -19,8 +19,8 @@ android {
         applicationId "cn.muchinfo.rma"
         minSdkVersion 24
         targetSdkVersion 30
-        versionCode 50003
-        versionName "5.0.03"
+        versionCode 50004
+        versionName "5.0.04"
         multiDexEnabled true
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         //指定room.schemaLocation生成的文件路径
@@ -66,6 +66,13 @@ android {
         }
     }
 
+    packagingOptions{
+        pickFirst  'lib/armeabi/libclientencode.so'
+        pickFirst  'lib/armeabi-v7a/libclientencode.so'
+        pickFirst  'lib/arm64-v8a/libclientencode.so'
+        pickFirst  'lib/x86/libclientencode.so'
+        pickFirst  'lib/x86_64/libclientencode.so'
+    }
 }
 
 dependencies {
@@ -80,7 +87,7 @@ dependencies {
     androidTestImplementation 'androidx.test.ext:junit:1.1.1'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     implementation files('libs/easypermissions-release.aar')
-    implementation files('libs/InfoCollection_single_release_v1.5-2019-08-01.aar')
+    implementation files('libs/InfoCollection_single_release_v1.7-2020-09-23.aar')
     implementation 'io.coil-kt:coil:1.0.0-rc3'
     implementation 'com.afollestad.material-dialogs:lifecycle:3.1.1'
     implementation 'com.afollestad.material-dialogs:core:3.1.1'

BIN
RMA/app/libs/InfoCollection_single_release_v1.5-2019-08-01.aar


BIN
RMA/app/libs/InfoCollection_single_release_v1.7-2020-09-23.aar


+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt

@@ -385,7 +385,7 @@ class AccountManager {
             callback = object : ResponseCallback<BaseResult<List<ClientMenuData>>>() {
                 override fun onResponse(response: BaseResult<List<ClientMenuData>>?, id: Int) {
                     GlobalDataCollection.instance?.ermcpRoleFuncMenuDataArrayList = response?.data?.toArrayList()
-                    responseBack(true, response?.data, null)
+                        responseBack(true, response?.data, null)
                 }
 
                 override fun onError(call: Call?, e: Exception?, id: Int) {

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

@@ -203,7 +203,7 @@ fun String.warehousestatus() : String{
 }
 
 /**
- * 登录账户状态 - 1:正常 2:冻结 3:无效
+ * 登录账户状态 - 1:正常 2:锁定 3:无效
  */
 fun String.loginstatus() : String{
     if (this.isNullOrEmpty()){
@@ -215,7 +215,7 @@ fun String.loginstatus() : String{
             str = "正常"
         }
         this == "2" -> {
-            str = "冻结"
+            str = "锁定"
         }
         this == "3" -> {
             str = "无效"

+ 11 - 2
RMA/app/src/main/java/cn/muchinfo/rma/global/data/AccMgrTaaccountData.kt

@@ -48,7 +48,10 @@ data class AccMgrTaaccountSonData(
     val parentaccountid : String? = "",//父账户id
     val relateduserid : String? = "",//关联userid
     val tradestatus : String? = "",//交易状态 - 1:正常 2:受限 3:冻结 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已注销
-    var isSelect: Int = 0//是否点击展开/是否选中
+    var isSelect: Int = 0,//是否点击展开/是否选中
+    val fcid :String? = "",
+    val fcname : String? = "",
+    val hedgeaccountcode :String? = ""
 ) : Parcelable{
     constructor(parcel: Parcel) : this(
         parcel.readString(),
@@ -58,7 +61,10 @@ data class AccMgrTaaccountSonData(
         parcel.readString(),
         parcel.readString(),
         parcel.readString(),
-        parcel.readInt()
+        parcel.readInt(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString()
     ) {
     }
 
@@ -71,6 +77,9 @@ data class AccMgrTaaccountSonData(
         parcel.writeString(relateduserid)
         parcel.writeString(tradestatus)
         parcel.writeInt(isSelect)
+        parcel.writeString(fcid)
+        parcel.writeString(fcname)
+        parcel.writeString(hedgeaccountcode)
     }
 
     override fun describeContents(): Int {

+ 50 - 3
RMA/app/src/main/java/cn/muchinfo/rma/global/data/RealExposureData.kt

@@ -66,7 +66,23 @@ data class RealExposureData(
     val TotalHedgeRatio : String? = "",//敞口比例
     val TotalNeedHedgeQty : String? = "",//期货应套保量
     val TotalSpotQty : String? = "",//现货数量
-    var rightData : List<String>? = arrayListOf()//组装的右侧数据
+    var rightData : List<String>? = arrayListOf(),//组装的右侧数据
+    val arbitrageqty : String? = "",//套利量
+    val DiffArbitrageQty : String? = "",//套利变动量
+    val DiffExposoureQty : String? = "",//变动量(套保敞口)
+    val DiffHedgeQty : String? = "",//套保变动量
+    val DiffQty : String? = "",//变动量(总敞口)
+    val DiffSpotHedgeQty : String? = "",//变动量(现货应套保总量)
+    val hedgeqty : String? = "",//套保量
+    val needarbitrageqty : String? = "",//应套利量
+    val needarbitrageratio : String? = "",//套利比例
+    val needhedgeqty : String? = "",//应套保量
+    val oriarbitrageqty : String? = "",//期初套利量
+    val orihedgeqty : String? = "",//期初套保量
+    val orineedhedgeexposoure : String?  ="",//期初套保敞口
+    val oritotalexposure : String? = "",//期初总敞口
+    val oritotalfutureqty : String? = "",//期初期货总量
+    val oritotalneedhedgeqty : String? = ""//期初现货应套保量
 ) : Parcelable{
     constructor(parcel: Parcel) : this(
         parcel.readString(),
@@ -98,7 +114,23 @@ data class RealExposureData(
         parcel.readString(),
         parcel.readString(),
         parcel.readString(),
-        parcel.createStringArrayList()
+        parcel.createStringArrayList(),
+        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()
     ) {
     }
 
@@ -133,6 +165,22 @@ data class RealExposureData(
         parcel.writeString(TotalNeedHedgeQty)
         parcel.writeString(TotalSpotQty)
         parcel.writeStringList(rightData)
+        parcel.writeString(arbitrageqty)
+        parcel.writeString(DiffArbitrageQty)
+        parcel.writeString(DiffExposoureQty)
+        parcel.writeString(DiffHedgeQty)
+        parcel.writeString(DiffQty)
+        parcel.writeString(DiffSpotHedgeQty)
+        parcel.writeString(hedgeqty)
+        parcel.writeString(needarbitrageqty)
+        parcel.writeString(needarbitrageratio)
+        parcel.writeString(needhedgeqty)
+        parcel.writeString(oriarbitrageqty)
+        parcel.writeString(orihedgeqty)
+        parcel.writeString(orineedhedgeexposoure)
+        parcel.writeString(oritotalexposure)
+        parcel.writeString(oritotalfutureqty)
+        parcel.writeString(oritotalneedhedgeqty)
     }
 
     override fun describeContents(): Int {
@@ -149,5 +197,4 @@ data class RealExposureData(
         }
     }
 
-
 }

+ 4 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/MainActivity.kt

@@ -149,10 +149,10 @@ class MainActivity : BaseActivity<MainViewModel>() {
         }
 
         //前海金我的页面
-        newFragments.add(seaKingMainFragment)
-        newTabText.add("我的")
-        newNormalIcon.add(R.mipmap.qhj_main_tab_normal)
-        newSelectIcon.add(R.mipmap.qhj_main_tab_select)
+//        newFragments.add(seaKingMainFragment)
+//        newTabText.add("我的")
+//        newNormalIcon.add(R.mipmap.qhj_main_tab_normal)
+//        newSelectIcon.add(R.mipmap.qhj_main_tab_select)
 
         //前海金铂金宝
 //        newTabText.add("铂金宝")

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

@@ -6,10 +6,10 @@ object Constant {
     /**
      * 获取基础url的接口
      */
-    const val baseurl = "http://103.40.249.127:28280/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" // shenzhen01  123123
-//    const val baseurl = "http://192.168.31.220:8080/cfg?key=test_220"//李倩
+    const val baseurl = "http://192.168.31.220:8080/cfg?key=test_220"//李倩
 //      const val baseurl = "http://192.168.30.211:8080/cfg?key=test_211"// 瑶姐
 //    const val baseurl = "http://192.168.31.175:8080/cfg?key=test_175" // 8888  123123
 //    const val baseurl = "http://192.168.31.223:8080/cfg?key=test_223"
@@ -48,6 +48,8 @@ object Constant {
 
     const val tradePort = "tradePort"
 
+    /** 现货合同 **/
+    const val table_mobile_spotcontract  = "table_mobile_spotcontract"
 
     /** 采购_待点价 ***/
     const val table_mobile_purchase_pointprice = "table_mobile_purchase_pointprice"
@@ -131,10 +133,10 @@ object Constant {
     const val table_mobile_stock_aduit = "table_mobile_stock_aduit"
 
     /** 库存报表-入库明细 **/
-    const val table_mobile_stock_report_in_detail = "table_mobile_stock_report_in_detail"
+    const val table_mobile_stock_indetail = "table_mobile_stock_indetail"
 
     /** 库存报表-出库明细 **/
-    const val table_mobile_stock_report_out_detail = "table_mobile_stock_report_out_detail"
+    const val table_mobile_stock_outdetail = "table_mobile_stock_outdetail"
 
     /** 现货损益报表 **/
     const val table_mobile_report_spot_profit = "table_mobile_report_spot_profit"

+ 10 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/exposure/ExposureViewModel.kt

@@ -119,7 +119,7 @@ class ExposureViewModel : BaseViewModel(){
         val newList = arrayListOf<ExposureRealTimeDetailsData>()
         respData.forEach {
             val newRightData = arrayListOf<String>()
-            newRightData.add(it.wrstandardname + "\n" + it.qty + it.enumdicname)
+            newRightData.add(it.deliverygoodsname + "\n" + NumberUtils.doubleDistortion(it.qty) + it.enumdicname)
             newRightData.add(NumberUtils.roundNum(it.changeQty,2) + it.enumdicname)
             newRightData.add(NumberUtils.roundNum(it.relateNo ?: "",2))
             newRightData.add(NumberUtils.roundNum(it.convertfactor,2) + "\n" + it.convertratio)
@@ -195,12 +195,15 @@ class ExposureViewModel : BaseViewModel(){
         val newList = arrayListOf<RealExposureData>()
         respData.forEach {
             val newRightData = arrayListOf<String>()
-            newRightData.add(NumberUtils.roundNum(it.TotalSpotQty,2) + it.ENUMDICNAME + "\n" + it.MiddleGoodsHedgeRatio?.toPercentage())
-            newRightData.add(NumberUtils.roundNum(it.TotalNeedHedgeQty,2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(it.TotalFutureQty,2) + it.ENUMDICNAME)
-            newRightData.add(NumberUtils.roundNum(it.NeedHedgeExposoure,2) + it.ENUMDICNAME + "\n" + it.NeedHedgeRatio?.toPercentage())
-            newRightData.add(NumberUtils.roundNum(it.TotalExposure,2) + it.ENUMDICNAME + "\n" +it.TotalHedgeRatio?.toPercentage())
-            newRightData.add(NumberUtils.roundNum(NumberUtils.doubleDistortion(it.OriTotalSpotQty),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(NumberUtils.doubleDistortion(it.DiffSpotQty),2) + it.ENUMDICNAME)
-            newRightData.add(NumberUtils.roundNum(NumberUtils.doubleDistortion(it.OriTotalFutuQty),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(NumberUtils.doubleDistortion(it.DiffFutuQty),2) + it.ENUMDICNAME)
+            newRightData.add(NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.hedgeqty),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.arbitrageqty),2) + it.ENUMDICNAME)//'套保量/\n 套利量
+            newRightData.add(NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.TotalSpotQty),2) + it.ENUMDICNAME + "\n" +  NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.DiffSpotQty),2) + it.ENUMDICNAME)//'现货总量/\n 变动量 '
+            newRightData.add(NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.DiffHedgeQty),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(it.DiffArbitrageQty,2) + it.ENUMDICNAME)//'套保变动量/\n 套利变动量 '
+            newRightData.add(it.MiddleGoodsHedgeRatio?.toPercentage() + "\n" + it.needarbitrageratio?.toPercentage())//'套保比例/\n 套利比例 '
+            newRightData.add(NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.needhedgeqty),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.needarbitrageqty),2) + it.ENUMDICNAME)//'应套保量/\n 应套利量 '
+            newRightData.add(NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.TotalNeedHedgeQty),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.DiffSpotHedgeQty),2) + it.ENUMDICNAME)//'现货应套保总量/\n 变动量 '
+            newRightData.add(NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.TotalFutureQty),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.DiffFutuQty),2) + it.ENUMDICNAME)//'期货总量/\n 变动量 '
+            newRightData.add(NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.NeedHedgeExposoure),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.DiffExposoureQty),2) + it.ENUMDICNAME)//'套保敞口/\n 变动量 '
+            newRightData.add(NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.TotalExposure),2) + it.ENUMDICNAME + "\n" + NumberUtils.roundNum(NumberUtils.checkDecimalPlace(it.DiffQty),2) + it.ENUMDICNAME)//'总敞口/\n 变动量 '
             val newData = it.copy(rightData = newRightData)
             newList.add(newData)
         }

+ 4 - 5
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/HomeFragment.kt

@@ -1044,18 +1044,17 @@ class SecondTabUI(private val baseFragment: Fragment, private val viewModel: Hom
                         }.lparams(matchParent, matchParent)
 
                         textView {
-                            visibility = View.GONE
                             viewModel.pendingAudit.bindOptional(context) {
-                                if (it?.spotcontractqty?.toInt() ?: 0 > 99) {
+                                if (it?.areastockqty?.toInt() ?: 0 > 99) {
                                     text = "99+"
                                 } else {
-                                    text = it?.spotcontractqty.toString()
+                                    text = it?.areastockqty.toString()
                                 }
 
-                                if (it?.spotcontractqty?.toInt() == 0) {
+                                if (it?.areastockqty?.toInt() == 0) {
                                     visibility = View.GONE
                                 } else {
-                                    visibility = View.GONE
+                                    visibility = View.VISIBLE
                                 }
                             }
                             textColorInt = R.color.p_global_write_color

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/AccountManagerViewHolder.kt

@@ -118,7 +118,7 @@ class AccountManagerViewHolder(
             }.lparams(matchParent, wrapContent)
 
             data.bindOptional(context){
-                accountUserAdapter.setNewData(it?.userlist)
+                accountUserAdapter.setNewData(it?.userlist?.remove { it.loginstatus == "3" })
             }
         }
     }

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/AccountUserViewHolder.kt

@@ -58,7 +58,7 @@ class AccountUserViewHolder(
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     data.bindOptional(context) {
-                        text = it?.accountname
+                        text = it?.loginname + "  -  " + it?.logincode
                     }
                     textColorInt = R.color.rma_black_33
                     textSizeAuto = 31

+ 3 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/FutureManagerViewHolder.kt

@@ -52,7 +52,7 @@ class FutureManagerViewHolder(private val activity : AppCompatActivity,private v
 
                 textView {
                     data.bindOptional(context) {
-                        text = it?.mainAcc?.accountname + "(" + it?.subacclist?.size + ")"
+                        text = it?.mainAcc?.accountname + "  -  " +  it?.mainAcc?.accountid + "           " + it?.mainAcc?.fcname
                     }
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
@@ -66,6 +66,8 @@ class FutureManagerViewHolder(private val activity : AppCompatActivity,private v
                         val intent = Intent()
                         intent.putExtra("type","2")
                         intent.putExtra("accountid",data.value?.mainAcc?.accountid)
+                        intent.putExtra("data1",data.value)
+                        intent.putExtra("data",data.value?.mainAcc)
                         intent.setClass(context,AddFutureAccountActivity::class.java)
                         ActivityUtils.startActivity(intent)
                     }

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/FutureUserViewHolder.kt

@@ -56,7 +56,7 @@ class FutureUserViewHolder(private val activity : AppCompatActivity,private val
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     data.bindOptional(context) {
-                        text = it?.accountname
+                        text = it?.accountname + "  -  " + it?.accountid
                     }
                     textColorInt = R.color.rma_black_33
                     textSizeAuto = 31

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/bussinessaccount/TradingManagerViewHolder.kt

@@ -129,7 +129,7 @@ class TradingManagerViewHolder(
                     val accountUserAdapter: BaseAdapter<Userlist, TradingUserViewHolder> =
                         BaseAdapter { _, _ -> TradingUserViewHolder(activity, viewModel,dataIndex,it?.rolename ?: "") }
                     adapter = accountUserAdapter
-                    accountUserAdapter.setNewData(it?.userlist)
+                    accountUserAdapter.setNewData(it?.userlist?.remove { it.loginstatus == "3" })
                 }
             }.lparams(matchParent, wrapContent)
 

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/bussinessaccount/TradingUserViewHolder.kt

@@ -60,7 +60,7 @@ class TradingUserViewHolder(
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     data.bindOptional(context) {
-                        text = it?.logincode + "       " +  it?.userid
+                        text = it?.loginname + "  -  " + it?.logincode
                     }
                     textColorInt = R.color.rma_black_33
                     textSizeAuto = 31

+ 61 - 12
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/AddFutureAccountActivity.kt

@@ -9,6 +9,8 @@ import android.widget.EditText
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.AccMgrTaaccountData
+import cn.muchinfo.rma.global.data.AccMgrTaaccountSonData
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
@@ -37,7 +39,15 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
      */
     private val accountid by lazy { intent.getStringExtra("accountid") }
 
+    /**
+     * 修改时传过来的数据
+     */
+    private val data by lazy { intent.getParcelableExtra<AccMgrTaaccountSonData>("data") as AccMgrTaaccountSonData }
 
+    /**
+     * 传过来的整体数据包含子账户列表
+     */
+    private val data1 by lazy { intent.getParcelableExtra<AccMgrTaaccountData>("data1") as AccMgrTaaccountData }
 
     /**
      * 输入的账户名称
@@ -70,6 +80,9 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
     fun init(){
         viewModel.queryFuturesCompany(accountid ?: "")//获取期货公司列表
         viewModel.queryTradingAccMgrLoginUser()//获取交易用户列表
+        if (type == "2"){
+            viewModel.selectFuturesCompany.postValue(SelectData(id = data.fcid ?: "",value = data.fcname ?: ""))
+        }
     }
 
     val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
@@ -149,6 +162,9 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                 }
 
                 editText {
+                    if (type == "2"){
+                        setText(data.accountname)
+                    }
                     account_name = this
                     hint = "请输入账户名称"
                     background = null
@@ -177,7 +193,7 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                     marginStart = autoSize(37)
                 }
                 textView {
-                    text = "期货登录账"
+                    text = "期货登录账"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent) {
@@ -186,7 +202,10 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
 
                 editText {
                     login_account = this
-                    hint = "请输入期货登录账户"
+                    if (type == "2"){
+                        setText(data.accountid)
+                    }
+                    hint = "请输入期货登录账号"
                     background = null
                     inputType = EditorInfo.TYPE_CLASS_TEXT
 //                    setDecimalInputType()
@@ -368,13 +387,17 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                         View.VISIBLE
                     }
                     onThrottleFirstClick {
+                        if (deleteCheck().not()){
+                            ToastUtils.showLong("有未注销的子账户")
+                            return@onThrottleFirstClick
+                        }
                         viewModel.TaaccountOperateReq(accountid = accountid?.toLong() ?: 0){
                             finish()
                         }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_save_info_bg
-                    text = "删除"
+                    text = "注销"
                     textSizeAuto = 38
                     textColorInt = R.color.rma_star_color
                 }.lparams(autoSize(419), autoSize(119)) {
@@ -391,16 +414,31 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                         if (check().not()){
                             return@onThrottleFirstClick
                         }
-                        viewModel.hedgeOutMainConfigReq(
-                            ismain = 1,
-                            accountname = account_name.text.toString(),
-                            hedgeaccountpwd = password.text.toString(),
-                            hedgeaccountcode = login_account.text.toString(),
-                            fcid = viewModel.selectFuturesCompany.value?.id?.toLong() ?: 0,
-                            relateduserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0
-                        ){
-                            finish()
+                        if (type == "1"){
+                            viewModel.hedgeOutMainConfigReq(
+                                ismain = 1,
+                                accountname = account_name.text.toString(),
+                                hedgeaccountpwd = password.text.toString(),
+                                hedgeaccountcode = login_account.text.toString(),
+                                fcid = viewModel.selectFuturesCompany.value?.id?.toLong() ?: 0,
+                                relateduserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0
+                            ){
+                                finish()
+                            }
+                        }else{
+                            viewModel.hedgeOutMainConfigReq(
+                                ismain = 1,
+                                accountid = accountid?.toLong() ?: 0,
+                                accountname = account_name.text.toString(),
+                                hedgeaccountpwd = password.text.toString(),
+                                hedgeaccountcode = login_account.text.toString(),
+                                fcid = viewModel.selectFuturesCompany.value?.id?.toLong() ?: 0,
+                                relateduserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0
+                            ){
+                                finish()
+                            }
                         }
+
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg
@@ -446,6 +484,17 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
         }
     }
 
+    fun deleteCheck() : Boolean{
+        var result : Boolean = true
+        result = data1.subacclist.isNullOrEmpty()
+        data1.subacclist?.forEach {
+            if (it.tradestatus == "7"){
+                result = false
+            }
+        }
+        return result
+    }
+
     /**
      * 提交数据前的校验
      */

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/manageaccount/ManagerAccountViewHolder.kt

@@ -107,7 +107,7 @@ class ManagerAccountViewHolder(
             }.lparams(matchParent, wrapContent)
 
             data.bindOptional(context){
-                accountUserAdapter.setNewData(it?.userlist)
+                accountUserAdapter.setNewData(it?.userlist?.remove { it.loginstatus == "3" })
             }
         }
     }

+ 7 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/business/BusinessManagementViewholder.kt

@@ -200,7 +200,13 @@ class BusinessManagementViewholder(private val activity: AppCompatActivity, priv
                         }
                     }
                     onThrottleFirstClick {
-
+                        viewModel.contractOperaOrder(operateApplyID = data.value?.operateapplyid?.toLong() ?: 0,operateType = 4){
+                            if (type == "1"){
+                                viewModel.queryBusinessDJ()
+                            }else{
+                                viewModel.queryBusinessJS()
+                            }
+                        }
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER

+ 9 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/viewholder/AddSpotCategoryViewHolder.kt

@@ -153,7 +153,7 @@ class AddSpotCategoryViewHolder(
                             value = "桶"
                         )
                     )
-                    activity.creatBottomSheetDialog("请选择套保", selectDataList) {
+                    activity.creatBottomSheetDialog("请选择单位", selectDataList) {
                         viewModel.changeSpotModelList(type = "4",id = data.value?.id.toString(),value = category_edittext.text.toString(),coefficientwarehouse = coefficient_of_warehouse.text.toString(),enumdicnameid = this.id,enumdicname = this.value)
                     }
                 }
@@ -175,8 +175,14 @@ class AddSpotCategoryViewHolder(
 
                 textView {
                     data.bindOptional(context){
-                        text = it?.enumdicname
-                        textColorInt = R.color.rma_black_33
+                        if (it?.enumdicname.isNullOrEmpty()){
+                            text = "请选择单位"
+                            textColorInt = R.color.rma_hint_text_color_ccc
+                        }else{
+                            text = it?.enumdicname
+                            textColorInt = R.color.rma_black_33
+                        }
+
                     }
 //                    selectUnitType.bindOptional(context) {
 //                        text = it?.value

+ 5 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/AddContractActivity.kt

@@ -204,7 +204,7 @@ class AddContractActivity : BaseActivity<ContractViewModel>() {
             viewModel.queryWrStandardDetail(data.wrstandardid ?: "")
             viewModel.queryDeliveryGoodsDetail(data.deliverygoodsid ?: "")
             selectWrStandModel.postValue(SelectData(id = data.wrstandardid.toString(),value = data.wrstandardname.toString(),convertfactor = data.convertfactor.toString()))
-            selectWrStandBrand.postValue(SelectData(id = "",value = data.brandname.toString()))
+            selectWrStandBrand.postValue(SelectData(id = data.spotgoodsbrandid.toString(),value = data.brandname.toString()))
             selelctCurreryId.postValue(SelectData(id = data.currencyid.toString(),value = data.currencyname.toString()))
             if (data.startdate.isNullOrEmpty().not()){
                 midpointsPeriodTime.postValue(data.startdate + "~" + data.enddate)
@@ -218,6 +218,7 @@ class AddContractActivity : BaseActivity<ContractViewModel>() {
             if (data.meruserid != "0"){
                 selectMerchandiser.postValue(SelectData(id = data.meruserid.toString(),value = data.meruserlogincode.toString()))
             }
+            selectGoodsList.postValue(SelectData(id = data.goodsid.toString(),value = data.goodsname.toString()))
 
 
         }
@@ -1306,6 +1307,9 @@ class AddContractActivity : BaseActivity<ContractViewModel>() {
                             }
 
                             editText {
+                                if (operationtype == "2"){
+                                    setText(data.pricemove)
+                                }
                                 liter_discount_edittext = this
                                 hint = "请输入升贴水"
                                 background = null

+ 423 - 69
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractActivity.kt

@@ -1,13 +1,17 @@
 package cn.muchinfo.rma.view.base.home.contract
 
+import android.annotation.SuppressLint
 import android.content.Intent
 import android.content.res.Configuration
 import android.content.res.Configuration.ORIENTATION_LANDSCAPE
 import android.os.Bundle
 import android.view.Gravity
+import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 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
@@ -16,8 +20,13 @@ import cn.muchinfo.rma.global.data.ContractData
 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.home.contract.adapter.ContractAdapter
+import cn.muchinfo.rma.view.base.procurement.ContentAdapter
+import cn.muchinfo.rma.view.base.procurement.TopTabAdpater
 import com.blankj.utilcode.util.ActivityUtils
 import com.blankj.utilcode.util.ConvertUtils
+import com.blankj.utilcode.util.SizeUtils
 import com.blankj.utilcode.util.ToastUtils
 import com.qmuiteam.qmui.util.QMUIDisplayHelper
 import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
@@ -253,56 +262,144 @@ class ContractActivity : BaseActivity<ContractViewModel>() {
 class UnSubmitUI(
     private val activity: AppCompatActivity,
     private val viewModel: ContractViewModel
-) {
-
+) : ContractAdapter.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)
+    }
 
-    private val unSubmitAdapter: BaseAdapter<ContractData, ContractDataViewHolder> = BaseAdapter { _, _ -> ContractDataViewHolder(activity, viewModel,"1") }
+    val contractAdapter by lazy {
+        ContractAdapter(activity,"1",viewModel)
+    }
 
+    @SuppressLint("RtlHardcoded")
     val root = _FrameLayout(activity).apply {
         verticalLayout {
-            viewModel.queryContract(QueryType = "1")
-            creatContractHeadUI()
-
-            view {
-                background = resources.getDrawable(R.color.line_hint_color)
-            }.lparams(matchParent, autoSize(1))
+            viewModel.queryTitle(Constant.table_mobile_spotcontract,"1")
+            contractAdapter.setOnContentScrollListener(this@UnSubmitUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//头部右侧数据
+                        viewModel.unSubmitTitle.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(SizeUtils.dp2px(135f)), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    /**
+                     * 用来同步内容列表的item左右滑动
+                     */
+                    setOnCustomScrollChangeListener { listener, scrollX, scrollY, oldScrollX, oldScrollY ->
+                        contractAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<ContractAdapter.ItemViewHolder> =
+                            contractAdapter.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.unSubmitTitle.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 {
+                    viewModel.queryContract("1")
+                }
 //                bindTaskStatus(viewModule.status)
                 swipeToLoadLayout {
                     swipeToLayout = this
                     setEnableRefresh(true)
                     setEnableLoadMore(false)
                     setOnRefreshListener {
-                        viewModel.queryContract(QueryType = "1")
+                        /**
+                         * 下拉刷新
+                         * contracttype 1-采购, -1-销售
+                         * type  1-全部 2-待点价 3-履约结算
+                         */
+                        viewModel.queryContract("1")
                     }
                     setEnableScrollContentWhenLoaded(false)
                     setEnableLoadMoreWhenContentNotFull(false)
+
                     recyclerView {
                         background = resources.getDrawable(R.color.white)
-                        adapter = unSubmitAdapter
-                    }.lparams(matchParent, matchParent)
+                        adapter = contractAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<ContractAdapter.ItemViewHolder> =
+                                    contractAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                            contractAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+
+
                 }
             }, emptyBlock = {
                 emptyView(hint = resources.getString(R.string.now_no_data))
             }).lparams(matchParent, matchParent)
 
-            viewModel.unSubmitList.bindOptional(context){
-                if (it?.isEmpty() == true || it?.size == 0){
+            viewModel.unSubmitList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
                     statusLayout.showEmpty()
-                }else {
-                    if (swipeToLayout.getIsRefreshing()){
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
                         swipeToLayout.finishRefresh()
+//                        mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
                     }
                     statusLayout.showSuccess()
-                    unSubmitAdapter.setNewData(it)
+                    contractAdapter.setDatas(it)
                 }
             }
         }
     }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
 }
 
 
@@ -312,56 +409,142 @@ class UnSubmitUI(
 class ToAuditUI(
     private val activity: AppCompatActivity,
     private val viewModel: ContractViewModel
-) {
-
+) : ContractAdapter.OnContentScrollListener {
     private lateinit var swipeToLayout: SwipeToLoadLayout
     private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
 
-    private val unSubmitAdapter: BaseAdapter<ContractData, ContractDataViewHolder> = BaseAdapter { _, _ -> ContractDataViewHolder(activity, viewModel,"2") }
+    val topAdapter by lazy {
+        TopTabAdpater(activity)
+    }
+
+    val contractAdapter by lazy {
+        ContractAdapter(activity,"1",viewModel)
+    }
 
+    @SuppressLint("RtlHardcoded")
     val root = _FrameLayout(activity).apply {
         verticalLayout {
-            viewModel.queryContract(QueryType = "2")
-            creatContractHeadUI()
-
-            view {
-                background = resources.getDrawable(R.color.line_hint_color)
-            }.lparams(matchParent, autoSize(1))
+            viewModel.queryTitle(Constant.table_mobile_spotcontract,"2")
+            contractAdapter.setOnContentScrollListener(this@ToAuditUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//头部右侧数据
+                        viewModel.toAuditTitle.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(SizeUtils.dp2px(135f)), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    /**
+                     * 用来同步内容列表的item左右滑动
+                     */
+                    setOnCustomScrollChangeListener { listener, scrollX, scrollY, oldScrollX, oldScrollY ->
+                        contractAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<ContractAdapter.ItemViewHolder> =
+                            contractAdapter.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.toAuditTitle.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 {
+                    viewModel.queryContract("2")
+                }
 //                bindTaskStatus(viewModule.status)
                 swipeToLoadLayout {
                     swipeToLayout = this
                     setEnableRefresh(true)
                     setEnableLoadMore(false)
                     setOnRefreshListener {
-                        viewModel.queryContract(QueryType = "2")
+                        /**
+                         * 下拉刷新
+                         */
+                        viewModel.queryContract("2")
                     }
                     setEnableScrollContentWhenLoaded(false)
                     setEnableLoadMoreWhenContentNotFull(false)
+
                     recyclerView {
                         background = resources.getDrawable(R.color.white)
-                        adapter = unSubmitAdapter
-                    }.lparams(matchParent, matchParent)
+                        adapter = contractAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<ContractAdapter.ItemViewHolder> =
+                                    contractAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                            contractAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+
+
                 }
             }, emptyBlock = {
                 emptyView(hint = resources.getString(R.string.now_no_data))
             }).lparams(matchParent, matchParent)
 
-            viewModel.toAuditList.bindOptional(context){
-                if (it?.isEmpty() == true || it?.size == 0){
+            viewModel.toAuditList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
                     statusLayout.showEmpty()
-                }else {
-                    if (swipeToLayout.getIsRefreshing()){
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
                         swipeToLayout.finishRefresh()
+//                        mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
                     }
                     statusLayout.showSuccess()
-                    unSubmitAdapter.setNewData(it)
+                    contractAdapter.setDatas(it)
                 }
             }
         }
     }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
 }
 
 /**
@@ -370,56 +553,142 @@ class ToAuditUI(
 class PerformanceUI(
     private val activity: AppCompatActivity,
     private val viewModel: ContractViewModel
-) {
-
+) : ContractAdapter.OnContentScrollListener {
     private lateinit var swipeToLayout: SwipeToLoadLayout
     private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
 
-    private val unSubmitAdapter: BaseAdapter<ContractData, ContractDataViewHolder> = BaseAdapter { _, _ -> ContractDataViewHolder(activity, viewModel,"3") }
+    val topAdapter by lazy {
+        TopTabAdpater(activity)
+    }
+
+    val contractAdapter by lazy {
+        ContractAdapter(activity,"1",viewModel)
+    }
 
+    @SuppressLint("RtlHardcoded")
     val root = _FrameLayout(activity).apply {
         verticalLayout {
-            viewModel.queryContract(QueryType = "3")
-            creatContractHeadUI()
-
-            view {
-                background = resources.getDrawable(R.color.line_hint_color)
-            }.lparams(matchParent, autoSize(1))
+            viewModel.queryTitle(Constant.table_mobile_spotcontract,"3")
+            contractAdapter.setOnContentScrollListener(this@PerformanceUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//头部右侧数据
+                        viewModel.performanceTitle.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(SizeUtils.dp2px(135f)), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    /**
+                     * 用来同步内容列表的item左右滑动
+                     */
+                    setOnCustomScrollChangeListener { listener, scrollX, scrollY, oldScrollX, oldScrollY ->
+                        contractAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<ContractAdapter.ItemViewHolder> =
+                            contractAdapter.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.performanceTitle.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 {
+                    viewModel.queryContract("3")
+                }
 //                bindTaskStatus(viewModule.status)
                 swipeToLoadLayout {
                     swipeToLayout = this
                     setEnableRefresh(true)
                     setEnableLoadMore(false)
                     setOnRefreshListener {
-                        viewModel.queryContract(QueryType = "3")
+                        /**
+                         * 下拉刷新
+                         */
+                        viewModel.queryContract("3")
                     }
                     setEnableScrollContentWhenLoaded(false)
                     setEnableLoadMoreWhenContentNotFull(false)
+
                     recyclerView {
                         background = resources.getDrawable(R.color.white)
-                        adapter = unSubmitAdapter
-                    }.lparams(matchParent, matchParent)
+                        adapter = contractAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<ContractAdapter.ItemViewHolder> =
+                                    contractAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                            contractAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+
+
                 }
             }, emptyBlock = {
                 emptyView(hint = resources.getString(R.string.now_no_data))
             }).lparams(matchParent, matchParent)
 
-            viewModel.performanceList.bindOptional(context){
-                if (it?.isEmpty() == true || it?.size == 0){
+            viewModel.performanceList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
                     statusLayout.showEmpty()
-                }else {
-                    if (swipeToLayout.getIsRefreshing()){
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
                         swipeToLayout.finishRefresh()
+//                        mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
                     }
                     statusLayout.showSuccess()
-                    unSubmitAdapter.setNewData(it)
+                    contractAdapter.setDatas(it)
                 }
             }
         }
     }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
 }
 
 /**
@@ -428,58 +697,143 @@ class PerformanceUI(
 class FinishUI(
     private val activity: AppCompatActivity,
     private val viewModel: ContractViewModel
-){
-
+) : ContractAdapter.OnContentScrollListener {
     private lateinit var swipeToLayout: SwipeToLoadLayout
     private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
 
-    private val unSubmitAdapter: BaseAdapter<ContractData, ContractDataViewHolder> = BaseAdapter { _, _ -> ContractDataViewHolder(activity, viewModel,"4") }
+    val topAdapter by lazy {
+        TopTabAdpater(activity)
+    }
+
+    val contractAdapter by lazy {
+        ContractAdapter(activity,"1",viewModel)
+    }
 
+    @SuppressLint("RtlHardcoded")
     val root = _FrameLayout(activity).apply {
         verticalLayout {
-            viewModel.queryContract(QueryType = "4")
-            creatContractHeadUI()
-
-            view {
-                background = resources.getDrawable(R.color.line_hint_color)
-            }.lparams(matchParent, autoSize(1))
+            viewModel.queryTitle(Constant.table_mobile_spotcontract,"4")
+            contractAdapter.setOnContentScrollListener(this@FinishUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//头部右侧数据
+                        viewModel.finishTitle.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(SizeUtils.dp2px(135f)), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    /**
+                     * 用来同步内容列表的item左右滑动
+                     */
+                    setOnCustomScrollChangeListener { listener, scrollX, scrollY, oldScrollX, oldScrollY ->
+                        contractAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<ContractAdapter.ItemViewHolder> =
+                            contractAdapter.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.finishTitle.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 {
+                    viewModel.queryContract("4")
+                }
 //                bindTaskStatus(viewModule.status)
                 swipeToLoadLayout {
                     swipeToLayout = this
                     setEnableRefresh(true)
                     setEnableLoadMore(false)
                     setOnRefreshListener {
-                        viewModel.queryContract(QueryType = "4")
+                        /**
+                         * 下拉刷新
+                         */
+                        viewModel.queryContract("4")
                     }
                     setEnableScrollContentWhenLoaded(false)
                     setEnableLoadMoreWhenContentNotFull(false)
+
                     recyclerView {
                         background = resources.getDrawable(R.color.white)
-                        adapter = unSubmitAdapter
-                    }.lparams(matchParent, matchParent)
+                        adapter = contractAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<ContractAdapter.ItemViewHolder> =
+                                    contractAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                            contractAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+
+
                 }
             }, emptyBlock = {
                 emptyView(hint = resources.getString(R.string.now_no_data))
             }).lparams(matchParent, matchParent)
 
-            viewModel.finishList.bindOptional(context){
-                if (it?.isEmpty() == true || it?.size == 0){
+            viewModel.finishList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
                     statusLayout.showEmpty()
-                }else {
-                    if (swipeToLayout.getIsRefreshing()){
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
                         swipeToLayout.finishRefresh()
+//                        mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
                     }
                     statusLayout.showSuccess()
-                    unSubmitAdapter.setNewData(it)
+                    contractAdapter.setDatas(it)
                 }
             }
         }
     }
-}
 
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
+}
 fun _LinearLayout.creatContractHeadUI(){
     linearLayout {
         gravity = Gravity.CENTER_VERTICAL

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

@@ -3,8 +3,11 @@ package cn.muchinfo.rma.view.base.home.contract
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.business.contract.SpotContractInfo
 import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.ViewEnumUtils
 import cn.muchinfo.rma.global.data.*
 import cn.muchinfo.rma.global.database.AppDatabase
+import cn.muchinfo.rma.global.isBlankString
+import cn.muchinfo.rma.global.isShowTimeString
 import cn.muchinfo.rma.global.room.Builder
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
@@ -69,38 +72,38 @@ class ContractViewModel : BaseViewModel() {
     /**
      * 现货品种列表
      */
-    val deliveryGoodsList : MutableLiveData<List<DeliveryGoodsData>> = MutableLiveData()
+    val deliveryGoodsList: MutableLiveData<List<DeliveryGoodsData>> = MutableLiveData()
 
     /**
      * 现货品种详情
      */
-    val deliveryGoodsDetailsData : MutableLiveData<DeliveryGoodsDetailData> = MutableLiveData()
+    val deliveryGoodsDetailsData: MutableLiveData<DeliveryGoodsDetailData> = MutableLiveData()
 
     /**
      * 登录账号列表
      */
-    val accountManagerList : MutableLiveData<List<AccMgrLoginUserData>> = MutableLiveData()
+    val accountManagerList: MutableLiveData<List<AccMgrLoginUserData>> = MutableLiveData()
 
     /**
      * 期货账户列表数据
      */
-    val futureDataList : MutableLiveData<List<AccMgrTaaccountSonData>> = MutableLiveData()
+    val futureDataList: MutableLiveData<List<AccMgrTaaccountSonData>> = MutableLiveData()
 
     /**
      * 交易账号列表
      */
-    val tradingAccountManagerList : MutableLiveData<List<AccMgrLoginUserData>> = MutableLiveData()
+    val tradingAccountManagerList: MutableLiveData<List<AccMgrLoginUserData>> = MutableLiveData()
 
     /**
      * 查询账户管理登录账号(账户管理/交易账号)
      */
-    fun queryTradingAccMgrLoginUser(){
+    fun queryTradingAccMgrLoginUser() {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("querytype", "2")
         }
-        MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params){isSuccess, respData, error ->
-            if (isSuccess){
+        MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
                 tradingAccountManagerList.postValue(respData)
             }
         }
@@ -109,10 +112,10 @@ class ContractViewModel : BaseViewModel() {
     /**
      * 组装获取可选择的交易用户的列表
      */
-    fun getCanSelectTradingAccountList() : List<SelectData>{
+    fun getCanSelectTradingAccountList(): List<SelectData> {
         val selectDataList = arrayListOf<SelectData>()
         tradingAccountManagerList.value?.forEach {
-            selectDataList.add(SelectData(id = it.roleid ?: "",value = it.rolename ?: ""))
+            selectDataList.add(SelectData(id = it.roleid ?: "", value = it.rolename ?: ""))
         }
         return selectDataList
     }
@@ -121,12 +124,12 @@ class ContractViewModel : BaseViewModel() {
     /**
      * 查询账户管理/期货账户
      */
-    fun queryAccMgrTaaccount(){
+    fun queryAccMgrTaaccount() {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
-        MyApplication.getInstance()?.accountManager?.queryAccMgrTaaccount(params = params){isSuccess, respData, error ->
-            if (isSuccess){
+        MyApplication.getInstance()?.accountManager?.queryAccMgrTaaccount(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
                 resetAccMgrTaaccount(respData ?: arrayListOf())
             }
         }
@@ -135,7 +138,7 @@ class ContractViewModel : BaseViewModel() {
     /**
      * 对期货账户的主列表和子列表进行合并
      */
-    fun resetAccMgrTaaccount(oldList : List<AccMgrTaaccountData>){
+    fun resetAccMgrTaaccount(oldList: List<AccMgrTaaccountData>) {
         val newDataList = arrayListOf<AccMgrTaaccountSonData>()
         oldList.forEach {
             newDataList.add(it.mainAcc ?: AccMgrTaaccountSonData())
@@ -151,10 +154,10 @@ class ContractViewModel : BaseViewModel() {
      * 获取可供选择的期货账户列表
      * @return List<SelectData>
      */
-    fun getSelectFutureAccount() : List<SelectData>{
+    fun getSelectFutureAccount(): List<SelectData> {
         val newSelectData = arrayListOf<SelectData>()
         futureDataList.value?.forEach {
-            newSelectData.add(SelectData(id = it.accountid ?: "",value = it.accountname ?: ""))
+            newSelectData.add(SelectData(id = it.accountid ?: "", value = it.accountname ?: ""))
         }
         return newSelectData
     }
@@ -163,13 +166,13 @@ class ContractViewModel : BaseViewModel() {
     /**
      * 查询账户管理登录账号(账户管理/登录账号)
      */
-    fun queryAccMgrLoginUser(){
+    fun queryAccMgrLoginUser() {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
-            put("querytype","1")
+            put("querytype", "1")
         }
-        MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params){isSuccess, respData, error ->
-            if (isSuccess){
+        MyApplication.getInstance()?.accountManager?.queryAccMgrLoginUser(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
                 accountManagerList.postValue(respData)
             }
         }
@@ -179,13 +182,18 @@ class ContractViewModel : BaseViewModel() {
      * 获取业务员可选择列表
      * @return List<SelectData>
      */
-    fun getSelectSalesmanData() : List<SelectData>{
+    fun getSelectSalesmanData(): List<SelectData> {
         val newSelectData = arrayListOf<SelectData>()
         accountManagerList.value?.forEach {
-            if (it.roleid == "22"){
+            if (it.roleid == "22") {
                 it.userlist?.forEach {
-                    if (it.roletype?.contains("22") == true){
-                        newSelectData.add(SelectData(id = it.userid ?: "",value = it.accountname ?: ""))
+                    if (it.roletype?.contains("22") == true) {
+                        newSelectData.add(
+                            SelectData(
+                                id = it.userid ?: "",
+                                value = it.accountname ?: ""
+                            )
+                        )
                     }
                 }
             }
@@ -197,13 +205,18 @@ class ContractViewModel : BaseViewModel() {
      * 获取跟单员可选择列表
      * @return List<SelectData>
      */
-    fun getSelectMerchandiserData() : List<SelectData>{
+    fun getSelectMerchandiserData(): List<SelectData> {
         val newSelectData = arrayListOf<SelectData>()
         accountManagerList.value?.forEach {
-            if (it.roleid == "23"){
+            if (it.roleid == "23") {
                 it.userlist?.forEach {
-                    if (it.roletype?.contains("23") == true){
-                        newSelectData.add(SelectData(id = it.userid ?: "",value = it.accountname ?: ""))
+                    if (it.roletype?.contains("23") == true) {
+                        newSelectData.add(
+                            SelectData(
+                                id = it.userid ?: "",
+                                value = it.accountname ?: ""
+                            )
+                        )
                     }
                 }
             }
@@ -214,10 +227,13 @@ class ContractViewModel : BaseViewModel() {
     /**
      * /Ermcp3/QueryDeliveryGoods 查询现货商品
      */
-    fun queryDeliveryGoods(){
+    fun queryDeliveryGoods() {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
-            put("usertype",GlobalDataCollection.instance?.userAccountData?.usertype?.toString() ?: "")
+            put(
+                "usertype",
+                GlobalDataCollection.instance?.userAccountData?.usertype?.toString() ?: ""
+            )
         }
         MyApplication.getInstance()?.commodityManager?.queryDeliveryGoods(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
@@ -231,15 +247,18 @@ class ContractViewModel : BaseViewModel() {
     /**
      * /Ermcp3/QueryDeliveryGoods 查询现货商品详情
      */
-    fun queryDeliveryGoodsDetail(deliverygoodsid : String){
+    fun queryDeliveryGoodsDetail(deliverygoodsid: String) {
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
-            put("usertype",GlobalDataCollection.instance?.userAccountData?.usertype?.toString() ?: "")
-            put("deliverygoodsid",deliverygoodsid)
+            put(
+                "usertype",
+                GlobalDataCollection.instance?.userAccountData?.usertype?.toString() ?: ""
+            )
+            put("deliverygoodsid", deliverygoodsid)
         }
         MyApplication.getInstance()?.commodityManager?.queryDeliveryGoodsDetail(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
-                if (respData?.size ?: 0 > 0){
+                if (respData?.size ?: 0 > 0) {
                     deliveryGoodsDetailsData.postValue(respData?.get(0))
                 }
             } else {
@@ -252,10 +271,17 @@ class ContractViewModel : BaseViewModel() {
      * 可供选择的品类列表
      * @return List<SelectData>
      */
-    fun getSelectWrsandData():List<SelectData>{
+    fun getSelectWrsandData(): List<SelectData> {
         val newSelectData = arrayListOf<SelectData>()
         deliveryGoodsDetailsData.value?.gmlist?.forEach {
-            newSelectData.add(SelectData(id = it.wrstandardid ?: "",value = it.wrstandardname ?: "", convertfactor = it.convertfactor ?: "",enumdicname = it.enumdicname ?: ""))
+            newSelectData.add(
+                SelectData(
+                    id = it.wrstandardid ?: "",
+                    value = it.wrstandardname ?: "",
+                    convertfactor = it.convertfactor ?: "",
+                    enumdicname = it.enumdicname ?: ""
+                )
+            )
         }
         return newSelectData
     }
@@ -337,7 +363,10 @@ class ContractViewModel : BaseViewModel() {
 
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
-            put("usertype",GlobalDataCollection.instance?.userAccountData?.usertype?.toString() ?: "")
+            put(
+                "usertype",
+                GlobalDataCollection.instance?.userAccountData?.usertype?.toString() ?: ""
+            )
             put("querytype", QueryType)
         }
 
@@ -349,7 +378,7 @@ class ContractViewModel : BaseViewModel() {
                         newList?.sortWith(Comparator { t1, t2 ->
                             (TimeUtils.string2Millis(t1.updatetime) - TimeUtils.string2Millis(t2.updatetime)).toInt()
                         })
-                        unSubmitList.postValue(newList)
+                        unSubmitList.postValue(resetContraData(newList ?: arrayListOf()))
                     }
                     "2" -> {
                         val newList = respData?.toArrayList()
@@ -376,6 +405,36 @@ class ContractViewModel : BaseViewModel() {
         }
     }
 
+    //组装现货合同右侧数据
+    fun resetContraData(respData: List<ContractData>): List<ContractData> {
+        val newList = arrayListOf<ContractData>()
+        respData.forEach {
+            val newRightData = arrayListOf<String>()
+
+            newRightData.add(if (it.contracttype == "1"){
+                it.sellusername
+            }else{
+                it.buyusername
+            } + "\n" + it.qty + it.enumdicname)//'对手方/\n合同量 '
+            newRightData.add(it.deliverygoodsname + "\n" + it.wrstandardname)//'现货品种/\n品类 '
+            newRightData.add(if (it.biztype == "1"){
+                "套保"
+            }else{
+                "套利"
+            } + "\n" + it.convertfactor)//'业务类型/\n标仓系数 '
+            newRightData.add(ViewEnumUtils.getPriceType(it.pricetype ?: "")  + "\n" + it.goodsname?.isBlankString())//'定价类型/\n点价合约 '
+            newRightData.add(it.price + "\n" + it.pricemove)//'价格/\n升贴水 '
+            newRightData.add(it.amount + "\n" + it.margin)//'金额/\n保证金 '
+            newRightData.add(it.startdate?.isShowTimeString("MM-dd") + "~" + it.enddate?.isShowTimeString("MM-dd") + "\n" + it.deliverystartdate?.isShowTimeString("MM-dd") + "~" + it.deliveryenddate?.isShowTimeString("MM-dd"))//'点价期/\n交收期 '
+            newRightData.add(it.saleuserlogincode?.isBlankString() + "\n" + it.meruserlogincode?.isBlankString())//'业务员/\n跟单员 '
+            newRightData.add(it.tradeuserlogincode?.isBlankString() + "\n" + it.currencyname)//'交易用户/\n结算币种 '
+            val newData = it.copy(rightData = newRightData)
+            newList.add(newData)
+
+        }
+        return newList
+    }
+
 
     /**
      * 查询客户资料列表(正常的列表)用来页面选择客户
@@ -401,7 +460,12 @@ class ContractViewModel : BaseViewModel() {
     fun setSelectCustomerList(dataList: List<UserInfoData>): ArrayList<SelectData> {
         val newCustomerList = arrayListOf<SelectData>()
         dataList.forEach {
-            newCustomerList.add(SelectData(id = it.userid.toString() ?: "", value = it.customername ?: ""))
+            newCustomerList.add(
+                SelectData(
+                    id = it.userid.toString() ?: "",
+                    value = it.customername ?: ""
+                )
+            )
         }
         return newCustomerList
     }
@@ -410,11 +474,11 @@ class ContractViewModel : BaseViewModel() {
      * 获取点价合约的选择列表
      * @return ArrayList<SelectData>
      */
-    fun setSelectGoodsList() : ArrayList<SelectData>{
+    fun setSelectGoodsList(): ArrayList<SelectData> {
         val goodsList = Builder.getDatabase<AppDatabase>().goodsInfoDao.all
         val newCustomerList = arrayListOf<SelectData>()
         goodsList.forEach {
-            newCustomerList.add(SelectData(id = it.goodsid.toString(),value = it.goodsname))
+            newCustomerList.add(SelectData(id = it.goodsid.toString(), value = it.goodsname))
         }
         return newCustomerList
     }
@@ -485,12 +549,23 @@ class ContractViewModel : BaseViewModel() {
     ) {
         loadingDialogStatus.value = TaskUiModel.inFlight()
         GlobalScope.launch {
-            MyApplication.getInstance()?.contractManager?.orderContract(contractInfo = contractInfo,OperateType = OperateType,Remark = Remark,SpotContractID = SpotContractID){isCompleted, err ->
-                if (isCompleted){
+            MyApplication.getInstance()?.contractManager?.orderContract(
+                contractInfo = contractInfo,
+                OperateType = OperateType,
+                Remark = Remark,
+                SpotContractID = SpotContractID
+            ) { isCompleted, err ->
+                if (isCompleted) {
                     loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
                     isSuccess(true)
-                }else{
-                    loadingDialogStatus.postValue(TaskUiModel.failed(InteractiveException(errorMessage = err?.message!!)))
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
                 }
             }
         }
@@ -512,12 +587,23 @@ class ContractViewModel : BaseViewModel() {
     ) {
         loadingDialogStatus.value = TaskUiModel.inFlight()
         GlobalScope.launch {
-            MyApplication.getInstance()?.contractManager?.orderOneContract(contractInfo = contractInfo,OperateType = OperateType,Remark = Remark,SpotContractID = SpotContractID){isCompleted, err ->
-                if (isCompleted){
+            MyApplication.getInstance()?.contractManager?.orderOneContract(
+                contractInfo = contractInfo,
+                OperateType = OperateType,
+                Remark = Remark,
+                SpotContractID = SpotContractID
+            ) { isCompleted, err ->
+                if (isCompleted) {
                     loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
                     isSuccess(true)
-                }else{
-                    loadingDialogStatus.postValue(TaskUiModel.failed(InteractiveException(errorMessage = err?.message!!)))
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
                 }
             }
         }
@@ -526,13 +612,59 @@ class ContractViewModel : BaseViewModel() {
     /**
      * 获取可供选择的币种信息
      */
-    fun getSelectCurreryIdData() : List<SelectData>{
+    fun getSelectCurreryIdData(): List<SelectData> {
         val selectDataList = arrayListOf<SelectData>()
         GlobalDataCollection.instance?.getEnumList(enumCode = "paycurrency")?.forEach {
-            selectDataList.add(SelectData(id = it.enumitemname.toString(),value = it.enumdicname))
+            selectDataList.add(SelectData(id = it.enumitemname.toString(), value = it.enumdicname))
         }
         return selectDataList
     }
 
 
+    //----------------------新版多数据现货合同-------------------
+
+    //未提交头部数据
+    val unSubmitTitle: MutableLiveData<List<ColumnsData>> = MutableLiveData()
+
+    //待审核
+    val toAuditTitle: MutableLiveData<List<ColumnsData>> = MutableLiveData()
+
+    //履约中
+    val performanceTitle: MutableLiveData<List<ColumnsData>> = MutableLiveData()
+
+    //已完结
+    val finishTitle: MutableLiveData<List<ColumnsData>> = MutableLiveData()
+
+
+    /**
+     * 查询采购列表头部数据
+     * @param tableKey String
+     */
+    fun queryTitle(tableKey: String, type: String) {
+        val params = mutableMapOf<String, String>().apply {
+            put("tableKey", tableKey)
+            put("tableType", "3")
+        }
+        MyApplication.getInstance()?.commonManager?.queryTableDefine(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                if (respData?.isNotEmpty() == true){
+                    val newlist = respData?.get(0)?.columns?.toArrayList()
+                    newlist?.sortWith(Comparator { t1, t2 ->
+                        t1.orderindex?.toInt()?.minus(t2.orderindex?.toInt() ?: 0) ?: 0
+                    })
+                    if (type == "1"){
+                        unSubmitTitle.postValue(newlist)
+                    }else if (type == "2"){
+                        toAuditTitle.postValue(newlist)
+                    }else if (type == "3"){
+                        performanceTitle.postValue(newlist)
+                    }else if (type == "4"){
+                        finishTitle.postValue(newlist)
+                    }
+                    queryContract(type)
+                }
+            }
+        }
+    }
+
 }

+ 340 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/adapter/ContractAdapter.java

@@ -0,0 +1,340 @@
+package cn.muchinfo.rma.view.base.home.contract.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.business.contract.SpotContractInfo;
+import cn.muchinfo.rma.global.GlobalDataCollection;
+import cn.muchinfo.rma.global.data.ContractData;
+import cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView;
+import cn.muchinfo.rma.view.base.home.contract.ContractDetailsActivity;
+import cn.muchinfo.rma.view.base.home.contract.ContractViewModel;
+import cn.muchinfo.rma.view.base.home.registration.InvoiceRegistrationActivity;
+import cn.muchinfo.rma.view.base.home.registration.MidpointsRegistrationActivity;
+import cn.muchinfo.rma.view.base.home.registration.PaymentRegistrationActivity;
+import cn.muchinfo.rma.view.base.home.registration.SettlementRegistrationActivity;
+import cn.muchinfo.rma.view.base.home.registration.WarehouseRegistrationActivity;
+import cn.muchinfo.rma.view.base.procurement.ContractDetailActivity;
+import cn.muchinfo.rma.view.base.procurement.RightScrollAdapter;
+import kotlin.Unit;
+import kotlin.jvm.functions.Function1;
+
+/**
+ * 用于采购和销售的列表adapter
+ */
+public class ContractAdapter extends RecyclerView.Adapter<ContractAdapter.ItemViewHolder> {
+
+    private Context context;
+    private List<ContractData> datas;
+    private int index = -1;
+    private int position = -1;
+    private List<ItemViewHolder> mViewHolderList = new ArrayList<>();
+    public int offestX = 0;
+    private OnContentScrollListener onContentScrollListener;
+    private ContractViewModel viewModel;
+    private String type;//1 未提交 2 待审核 3 履约中 4 已完结
+
+    public interface OnContentScrollListener {
+        void onScroll(MotionEvent event);
+    }
+
+    public void setOnContentScrollListener(OnContentScrollListener onContentScrollListener) {
+        this.onContentScrollListener = onContentScrollListener;
+    }
+
+
+    public ContractAdapter(Context context, String type,ContractViewModel viewModel) {
+        this.context = context;
+        this.viewModel = viewModel;
+        this.type = type;
+    }
+
+    public void setDatas(List<ContractData> 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.layout_item_contract, viewGroup, false);
+        return new ItemViewHolder(view);
+    }
+
+    @SuppressLint("SetTextI18n")
+    @Override
+    public void onBindViewHolder(@NonNull final ItemViewHolder itemViewHolder, int i) {
+        this.index = i;
+        ContractData contractData = datas.get(i);
+        itemViewHolder.tvLeftTitle.setText(datas.get(i).getAccountname());
+        itemViewHolder.tv_left_bottom_title.setText(datas.get(i).getContractno());
+        //右边滑动部分
+        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);
+        }
+        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.horItemScrollview.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                setPosition(i);
+            }
+        });
+        if (type.equals("2")){
+            if (GlobalDataCollection.Companion.getInstance().getThreeLevelMenu("client_spotcontract","client_spotcontract_unaduit","client_spotcontract_cancel")){
+                if (contractData.getContracctstatus().equals("1")){
+                    itemViewHolder.contract_undo.setVisibility(View.VISIBLE);
+                }else {
+                    itemViewHolder.contract_undo.setVisibility(View.GONE);
+                }
+            }else {
+                itemViewHolder.contract_undo.setVisibility(View.GONE);
+            }
+        }else {
+            itemViewHolder.contract_undo.setVisibility(View.GONE);
+        }
+        //撤销
+        itemViewHolder.contract_undo.setOnClickListener(view -> {
+            Intent intent = new Intent();
+            intent.putExtra("type","3");
+            intent.putExtra("data",contractData);
+            intent.setClass(context, ContractDetailsActivity.class);
+            ActivityUtils.startActivity(intent);
+        });
+        if (type.equals("2")){
+            if (GlobalDataCollection.Companion.getInstance().getThreeLevelMenu("client_spotcontract","client_spotcontract_unaduit","client_spotcontract_check")){
+                if (contractData.getContracctstatus().equals("1")){
+                    itemViewHolder.contract_audit.setVisibility(View.VISIBLE);
+                }else {
+                    itemViewHolder.contract_audit.setVisibility(View.GONE);
+                }
+            }else {
+                itemViewHolder.contract_audit.setVisibility(View.GONE);
+            }
+        }else {
+            itemViewHolder.contract_audit.setVisibility(View.GONE);
+        }
+        //审核
+        itemViewHolder.contract_audit.setOnClickListener(view -> {
+            Intent intent = new Intent();
+            intent.putExtra("type","2");
+            intent.putExtra("data",contractData);
+            intent.setClass(context, ContractDetailsActivity.class);
+            ActivityUtils.startActivity(intent);
+        });
+        if (type.equals("1")){
+            if (GlobalDataCollection.Companion.getInstance().getThreeLevelMenu("client_spotcontract","client_spotcontract_unaduit","client_spotcontract_update")){
+                if (contractData.getContracctstatus().equals("1") || contractData.getContracctstatus().equals("0")){
+                    itemViewHolder.contract_modify.setVisibility(View.VISIBLE);
+                }else {
+                    itemViewHolder.contract_modify.setVisibility(View.GONE);
+                }
+            }else {
+                itemViewHolder.contract_modify.setVisibility(View.GONE);
+            }
+        }else {
+            itemViewHolder.contract_modify.setVisibility(View.GONE);
+        }
+        //修改
+        itemViewHolder.contract_modify.setOnClickListener(view -> {
+            Intent intent = new Intent();
+            intent.putExtra("type","2");
+            intent.putExtra("data",contractData);
+            intent.setClass(context, ContractDetailsActivity.class);
+            ActivityUtils.startActivity(intent);
+        });
+        if (type.equals("3")){
+            if (GlobalDataCollection.Companion.getInstance().getThreeLevelMenu("client_spotcontract","client_spotcontract_unaduit","client_spotcontract_finish")){
+                itemViewHolder.contract_completion.setVisibility(View.VISIBLE);
+            }else {
+                itemViewHolder.contract_completion.setVisibility(View.GONE);
+            }
+        }else {
+            itemViewHolder.contract_completion.setVisibility(View.GONE);
+        }
+        //完结合同
+        itemViewHolder.contract_completion.setOnClickListener(view -> {
+            Intent intent = new Intent();
+            intent.putExtra("type","4");
+            intent.putExtra("data",contractData);
+            intent.setClass(context, ContractDetailsActivity.class);
+            ActivityUtils.startActivity(intent);
+        });
+        if (type.equals("1")){
+            if (GlobalDataCollection.Companion.getInstance().getThreeLevelMenu("client_spotcontract","client_spotcontract_unaduit","client_spotcontract_recommit")){
+                if (contractData.getContracctstatus().equals("4") || contractData.getContracctstatus().equals("6")){
+                    itemViewHolder.contract_resubmit.setVisibility(View.VISIBLE);
+                }else {
+                    itemViewHolder.contract_resubmit.setVisibility(View.GONE);
+                }
+            }else {
+                itemViewHolder.contract_resubmit.setVisibility(View.GONE);
+            }
+        }else {
+            itemViewHolder.contract_resubmit.setVisibility(View.GONE);
+        }
+        //重新提交
+        itemViewHolder.contract_resubmit.setOnClickListener(view -> {
+            Intent intent = new Intent();
+            intent.putExtra("type","2");
+            intent.putExtra("data",contractData);
+            intent.setClass(context, ContractDetailsActivity.class);
+            ActivityUtils.startActivity(intent);
+        });
+        if (type.equals("1")){
+            if (GlobalDataCollection.Companion.getInstance().getThreeLevelMenu("client_spotcontract","client_spotcontract_unaduit","client_spotcontract_delete")){
+                itemViewHolder.contract_completion.setVisibility(View.VISIBLE);
+            }else {
+                itemViewHolder.contract_completion.setVisibility(View.GONE);
+            }
+        }else {
+            itemViewHolder.contract_completion.setVisibility(View.GONE);
+        }
+        //删除
+        itemViewHolder.contract_delete.setOnClickListener(view -> {
+            viewModel.orderContract(new SpotContractInfo(), "3", "", contractData.getSpotcontractid(), new Function1<Boolean, Unit>() {
+                @Override
+                public Unit invoke(Boolean aBoolean) {
+                    viewModel.queryContract("1");
+                    return null;
+                }
+            });
+        });
+        //详情
+        itemViewHolder.contract_details.setOnClickListener(view -> {
+            Intent intent = new Intent();
+            intent.putExtra("data", datas.get(i));
+            intent.putExtra("type",this.type);
+            intent.setClass(context, ContractDetailActivity.class);
+            context.startActivity(intent);
+        });
+
+        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 contract_details;//详情
+        TextView contract_undo;//撤销
+        TextView contract_audit;//审核
+        TextView contract_modify;//修改
+        TextView contract_completion;//完结合同
+        TextView contract_resubmit;//重新提交
+        TextView contract_delete;//删除
+        ImageView load_more;//更多
+        LinearLayout allView;//隐藏的底部操作空间
+        LinearLayout all_click_View;//item左侧点击控件
+        TextView tvLeftTitle;//左边销售方字段
+        TextView tv_left_bottom_title;//合同编号
+        RecyclerView rvItemRight;//右方的列表
+        ImageView click_icon;//图标
+        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);
+            contract_delete = itemView.findViewById(R.id.contract_delete);
+            contract_undo = itemView.findViewById(R.id.contract_undo);
+            click_icon = itemView.findViewById(R.id.click_icon);
+            contract_resubmit = itemView.findViewById(R.id.contract_resubmit);
+            contract_audit = itemView.findViewById(R.id.contract_audit);
+            contract_modify = itemView.findViewById(R.id.contract_modify);
+            contract_completion = itemView.findViewById(R.id.contract_completion);
+            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);
+
+            contract_details = itemView.findViewById(R.id.contract_details);
+            roots_view = itemView.findViewById(R.id.roots_view);
+        }
+    }
+}

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/AddCustomerDataActivity.kt

@@ -221,7 +221,7 @@ class AddCustomerDataActivity : BaseActivity<CustomerDataViewModel>() {
                             text = "客户资料审核"
                         }
                         "4" -> {
-                            text = "客户资料撤"
+                            text = "客户资料撤"
                         }
                         "5" -> {
                             text = "停用客户资料"

+ 85 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/CustomerDataDetailsActivity.kt

@@ -33,7 +33,7 @@ class CustomerDataDetailsActivity : BaseActivity<CustomerDataViewModel>(){
             topBar {
                 commonLeftButton()
                 commonTitle {
-                    textResource = R.string.add_customer_data
+                    text = "客户资料详情"
                 }
             }
             frameLayout {
@@ -90,7 +90,12 @@ class CustomerDataDetailsActivity : BaseActivity<CustomerDataViewModel>(){
                             }
 
                             textView {
-                                text = "企业"
+                                if (data.userinfotype == 1){
+                                    text = "个人"
+                                }else{
+                                    text = "企业"
+                                }
+
                                 textColorInt = R.color.black
                                 textSizeAuto = 31
                             }.lparams(wrapContent, wrapContent) {
@@ -123,6 +128,32 @@ class CustomerDataDetailsActivity : BaseActivity<CustomerDataViewModel>(){
                         viewItemUI()
 
                         linearLayout {
+                            if (data.userinfotype == 2){
+                                visibility = View.VISIBLE
+                            }else{
+                                visibility = View.GONE
+                            }
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "企业简称"
+                                textSizeAuto = 31
+                                textColorInt = R.color.p_normal_summary_txt_color
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(59)
+                            }
+
+                            textView {
+                                text = data.nickname
+                                textColorInt = R.color.black
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart =  autoSize(80)
+                            }
+                        }.lparams(matchParent, autoSize(136))
+
+                        viewItemUI()
+
+                        linearLayout {
 
                             gravity = Gravity.CENTER_VERTICAL
                             textView {
@@ -167,6 +198,32 @@ class CustomerDataDetailsActivity : BaseActivity<CustomerDataViewModel>(){
                         viewItemUI()
 
                         linearLayout {
+                            if (data.userinfotype == 2){
+                                visibility = View.VISIBLE
+                            }else{
+                                visibility = View.GONE
+                            }
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "法定代表人"
+                                textSizeAuto = 31
+                                textColorInt = R.color.p_normal_summary_txt_color
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(59)
+                            }
+
+                            textView {
+                                text = data.legalpersonname?.isBlankString()
+                                textColorInt = R.color.black
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(80)
+                            }
+                        }.lparams(matchParent, autoSize(136))
+
+                        viewItemUI()
+
+                        linearLayout {
 
                             gravity = Gravity.CENTER_VERTICAL
                             textView {
@@ -195,6 +252,32 @@ class CustomerDataDetailsActivity : BaseActivity<CustomerDataViewModel>(){
                             }
                         }.lparams(matchParent, autoSize(136))
 
+                         viewItemUI()
+
+                        linearLayout {
+                            if (data.userinfotype == 2){
+                                visibility = View.VISIBLE
+                            }else{
+                                visibility = View.GONE
+                            }
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "纳税人识别号"
+                                textSizeAuto = 31
+                                textColorInt = R.color.p_normal_summary_txt_color
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(59)
+                            }
+
+                            textView {
+                                text = data.taxpayernum?.isBlankString()
+                                textColorInt = R.color.black
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(80)
+                            }
+                        }.lparams(matchParent, autoSize(136))
+
                         viewItemUI()
 
                         linearLayout {

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/CustomerDataViewHolder.kt

@@ -279,7 +279,7 @@ class CustomerDataViewHolder(
                     }
                     //判断是否有相应权限显示该功能
                     if (GlobalDataCollection.instance?.getThreeLevelMenu(firstCode = "client_customer",secondCode = "client_customer_unsubmit",threeCode = "client_customer_update") == true){
-                        if (type == "1" || type == "3"){
+                        if (type == "1" /*|| type == "3"*/){//bug 95150要求修改
                             visibility = View.VISIBLE
                         }else{
                             visibility = View.GONE

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

@@ -175,7 +175,6 @@ class HedgeDetailsActivity : BaseActivity<HedgePlanViewModel>() {
                                         }
                                     }
                                     textView {
-                                        visibility = View.INVISIBLE
                                         text = "*"
                                         textColorInt = R.color.rma_star_color
                                         textSizeAuto = 31

+ 38 - 18
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanActivity.kt

@@ -136,14 +136,15 @@ class HedgePlanActivity : BaseActivity<HedgePlanViewModel>() {
 
                     view { }.lparams(0, autoSize(1), 1f)
 
-                    imageView {
-                        if (GlobalDataCollection.instance?.getSecondLevelMenu(firstCode = "client_hedgeplan",secondCode = "client_hedgeplan_search") == true){
-                            visibility = View.VISIBLE
-                        }else{
-                            visibility = View.GONE
-                        }
+                    imageView {//没这个功能,暂时直接去掉吧
+//                        if (GlobalDataCollection.instance?.getSecondLevelMenu(firstCode = "client_hedgeplan",secondCode = "client_hedgeplan_search") == true){
+//                            visibility = View.VISIBLE
+//                        }else{
+//                            visibility = View.GONE
+//                        }
+                        visibility = View.GONE
                         onThrottleFirstClick {
-                            ToastUtils.showLong("查询")
+
                         }
                         imageResource = R.mipmap.rma_search
                     }.lparams(autoSize(43), autoSize(43)) {
@@ -395,21 +396,27 @@ fun _LinearLayout.creatHedgeHeadUI() {
     linearLayout {
         gravity = Gravity.CENTER_VERTICAL
         verticalLayout {
+            gravity = Gravity.CENTER_VERTICAL
             textView {
                 text = "计划类型/"
                 textColorInt = R.color.hint_text_color
                 textSizeAuto = 24
-            }.lparams(wrapContent, wrapContent)
+            }.lparams(wrapContent, wrapContent){
+                marginStart = autoSize(35)
+            }
             textView {
                 text = "计划名称"
                 textColorInt = R.color.hint_text_color
                 textSizeAuto = 24
-            }.lparams(wrapContent, wrapContent)
-        }.lparams(wrapContent, wrapContent) {
-            marginStart = autoSize(37)
+            }.lparams(wrapContent, wrapContent){
+                marginStart = autoSize(35)
+            }
+        }.lparams(autoSize(230), autoSize(120)){
+
         }
 
         verticalLayout {
+            gravity = Gravity.CENTER_VERTICAL
             textView {
                 text = "现货品种/"
                 textColorInt = R.color.hint_text_color
@@ -420,8 +427,8 @@ fun _LinearLayout.creatHedgeHeadUI() {
                 textColorInt = R.color.hint_text_color
                 textSizeAuto = 24
             }.lparams(wrapContent, wrapContent)
-        }.lparams(wrapContent, wrapContent) {
-            marginStart = autoSize(200)
+        }.lparams(autoSize(150), autoSize(120)){
+            marginStart = autoSize(22)
         }
 
         verticalLayout {
@@ -437,12 +444,12 @@ fun _LinearLayout.creatHedgeHeadUI() {
                 textSizeAuto = 24
             }.lparams(wrapContent, wrapContent)
 
-        }.lparams(wrapContent, autoSize(92)) {
-            marginStart = autoSize(125)
+        }.lparams(autoSize(170), autoSize(120)){
+
         }
 
         verticalLayout {
-
+            gravity = Gravity.CENTER_VERTICAL
             textView {
                 text = "期货账户/"
                 textColorInt = R.color.hint_text_color
@@ -455,8 +462,21 @@ fun _LinearLayout.creatHedgeHeadUI() {
                 textSizeAuto = 24
             }.lparams(wrapContent, wrapContent)
 
-        }.lparams(wrapContent, wrapContent) {
-            marginStart = autoSize(125)
+        }.lparams(autoSize(200), autoSize(120)){
+
+        }
+        verticalLayout {
+
+            textView {
+                text = "结算币种"
+                textColorInt = R.color.hint_text_color
+                textSizeAuto = 24
+            }.lparams(wrapContent, wrapContent){
+                marginEnd = autoSize(36)
+            }
+
+        }.lparams(autoSize(170), wrapContent) {
+            topMargin = autoSize(10)
         }
     }.lparams(matchParent, autoSize(92))
 }

+ 26 - 12
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanViewHolder.kt

@@ -82,7 +82,7 @@ class HedgePlanViewHolder(private val activity: AppCompatActivity,private val vi
                         topMargin = autoSize(15)
                     }
 
-                }.lparams(autoSize(335), autoSize(120))
+                }.lparams(autoSize(230), autoSize(120))
 
                 verticalLayout {
                     textView {
@@ -98,10 +98,9 @@ class HedgePlanViewHolder(private val activity: AppCompatActivity,private val vi
                         topMargin = autoSize(25)
                     }
 
-                    // FIXME 后改为品类
                     textView {
                         data.bindOptional(context){
-                            text = "品类"
+                            text = it?.wrstandardname
                         }
                         textSizeAuto = 29
                         textColorInt = R.color.hint_text_color
@@ -126,7 +125,7 @@ class HedgePlanViewHolder(private val activity: AppCompatActivity,private val vi
                         maxLines = 1
                         ellipsize = TextUtils.TruncateAt.END
                     }.lparams(wrapContent, wrapContent) {
-                        gravity = Gravity.RIGHT
+
                         topMargin = autoSize(25)
                     }
 
@@ -137,24 +136,23 @@ class HedgePlanViewHolder(private val activity: AppCompatActivity,private val vi
                         textSizeAuto = 29
                         textColorInt = R.color.rma_black_33
                     }.lparams(wrapContent, wrapContent){
-                        gravity = Gravity.RIGHT
+
                     }
-                }.lparams(autoSize(145), autoSize(120))
+                }.lparams(autoSize(170), autoSize(120)){
+
+                }
 
                 verticalLayout {
 
                     textView {
-                        //FIXME 期货账户
                         data.bindOptional(context){
-                            text = "期货账户"
+                            text = it?.tradeusername
                         }
                         textSizeAuto = 29
                         textColorInt = R.color.rma_black_33
                     }.lparams(wrapContent, wrapContent) {
                         topMargin = autoSize(25)
                         marginEnd = autoSize(35)
-                        gravity = Gravity.RIGHT
-
                     }
                     //状态
                     textView {
@@ -167,9 +165,25 @@ class HedgePlanViewHolder(private val activity: AppCompatActivity,private val vi
                         ellipsize = TextUtils.TruncateAt.END
                     }.lparams(wrapContent, wrapContent){
                         marginEnd = autoSize(35)
-                        gravity = Gravity.RIGHT
+
+                    }
+                }.lparams(autoSize(200), autoSize(120)){
+
+                }
+
+                verticalLayout {
+
+                    textView {
+                        data.bindOptional(context){
+                            text = it?.currencyname
+                        }
+                        textColorInt = R.color.hint_text_color
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent){
+                        topMargin = autoSize(60)
                     }
-                }.lparams(autoSize(250), autoSize(120))
+
+                }.lparams(autoSize(170), wrapContent)
 
             }.lparams(matchParent, autoSize(120))
 

+ 6 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventoryaudit/BuySellInventoryActivity.kt

@@ -104,7 +104,7 @@ class BuySellInventoryActivity : BaseActivity<InventoryAuditViewModel>(){
                             }
                         }.lparams(matchParent, autoSize(60))
                         textView {
-                            text = "登记信息:"
+                            text = "合同基本信息:"
                             textColorInt = R.color.rma_blue_color
                             textSizeAuto = 34
                         }.lparams(wrapContent, wrapContent) {
@@ -152,7 +152,7 @@ class BuySellInventoryActivity : BaseActivity<InventoryAuditViewModel>(){
                                 linearLayout {
                                     emptyView()
                                     textView {
-                                        text = data.warehousename
+                                        text = data.deliverygoodsname
                                         textSizeAuto = 29
                                         textColorInt = R.color.rma_black_33
                                     }.lparams(wrapContent, wrapContent) {
@@ -257,7 +257,7 @@ class BuySellInventoryActivity : BaseActivity<InventoryAuditViewModel>(){
 
 
                         textView {
-                            text = "审核信息:"
+                            text = "审核登记信息:"
                             textColorInt = R.color.rma_blue_color
                             textSizeAuto = 34
                         }.lparams(wrapContent, wrapContent) {
@@ -299,7 +299,7 @@ class BuySellInventoryActivity : BaseActivity<InventoryAuditViewModel>(){
                                 linearLayout {
                                     emptyView()
                                     textView {
-                                        text = data.modelname
+                                        text = data.wrstandardname
                                         textSizeAuto = 29
                                         textColorInt = R.color.rma_black_33
                                     }.lparams(wrapContent, wrapContent){
@@ -400,7 +400,7 @@ class BuySellInventoryActivity : BaseActivity<InventoryAuditViewModel>(){
                                 linearLayout {
                                     emptyView()
                                     textView {
-                                        text = data.warehousename
+                                        text = data.warehousecode
                                         textSizeAuto = 29
                                         textColorInt = R.color.rma_black_33
                                     }.lparams(wrapContent, wrapContent){
@@ -456,8 +456,7 @@ class BuySellInventoryActivity : BaseActivity<InventoryAuditViewModel>(){
                         }
 
                         textView {
-
-                            text = "待审核登记信息:"
+                            text = "审核信息:"
                             textColorInt = R.color.rma_blue_color
                             textSizeAuto = 34
                         }.lparams(wrapContent, wrapContent) {

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventoryaudit/InventoryContentAdapter.java

@@ -141,7 +141,7 @@ public class InventoryContentAdapter extends RecyclerView.Adapter<InventoryConte
             intent.putExtra("type","2");
             intent.putExtra("status",this.status);
             intent.putExtra("data",datas.get(i));
-            if (datas.get(i).getInouttype().equals("1") || datas.get(i).getInouttype().equals("2")){
+            if (datas.get(i).getInouttype().equals("5") || datas.get(i).getInouttype().equals("6")){
                 intent.setClass(context,BuySellInventoryActivity.class);
             }else {
                 intent.setClass(context,ProductionInventoryActivity.class);
@@ -154,7 +154,7 @@ public class InventoryContentAdapter extends RecyclerView.Adapter<InventoryConte
             intent.putExtra("type","1");
             intent.putExtra("status",this.status);
             intent.putExtra("data",datas.get(i));
-            if (datas.get(i).getInouttype().equals("1") || datas.get(i).getInouttype().equals("2")){
+            if (datas.get(i).getInouttype().equals("5") || datas.get(i).getInouttype().equals("6")){
                 intent.setClass(context,BuySellInventoryActivity.class);
             }else {
                 intent.setClass(context,ProductionInventoryActivity.class);
@@ -167,7 +167,7 @@ public class InventoryContentAdapter extends RecyclerView.Adapter<InventoryConte
             intent.putExtra("type","3");
             intent.putExtra("status",this.status);
             intent.putExtra("data",datas.get(i));
-            if (datas.get(i).getInouttype().equals("1") || datas.get(i).getInouttype().equals("2")){
+            if (datas.get(i).getInouttype().equals("5") || datas.get(i).getInouttype().equals("6")){
                 intent.setClass(context,BuySellInventoryActivity.class);
             }else {
                 intent.setClass(context,ProductionInventoryActivity.class);

+ 2 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventoryaudit/ProductionInventoryActivity.kt

@@ -102,7 +102,7 @@ class ProductionInventoryActivity : BaseActivity<InventoryAuditViewModel>(){
 
 
                         textView {
-                            text = "待审核登记信息:"
+                            text = "合同基本信息:"
                             textColorInt = R.color.rma_blue_color
                             textSizeAuto = 34
                         }.lparams(wrapContent, wrapContent) {
@@ -218,7 +218,7 @@ class ProductionInventoryActivity : BaseActivity<InventoryAuditViewModel>(){
                                 linearLayout {
                                     emptyView()
                                     textView {
-                                        text = data.warehousename
+                                        text = data.warehousecode
                                         textSizeAuto = 29
                                         textColorInt = R.color.rma_black_33
                                     }.lparams(wrapContent, wrapContent)

+ 15 - 13
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventorymanager/InventoryManagerViewModel.kt

@@ -133,21 +133,23 @@ class InventoryManagerViewModel : BaseViewModel() {
         }
         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
-                })
-                inventoryDetailsTitle.postValue(newlist)
-                if (isFrom == "1"){
-                    queryAreaStockApply(detailtype)
-                }else{
-                    var queryData = ""
-                    if (querytype == "1"){
-                        queryData = querydate.isShowTimeString("yyyyMMdd")
+                if (respData?.isNotEmpty() == true){
+                    val newlist = respData?.get(0)?.columns?.toArrayList()
+                    newlist?.sortWith(Comparator { t1, t2 ->
+                        t1.orderindex?.toInt()?.minus(t2.orderindex?.toInt() ?: 0) ?: 0
+                    })
+                    inventoryDetailsTitle.postValue(newlist)
+                    if (isFrom == "1"){
+                        queryAreaStockApply(detailtype)
                     }else{
-                        queryData = querydate.isShowTimeString("yyyyMM")
+                        var queryData = ""
+                        if (querytype == "1"){
+                            queryData = querydate.isShowTimeString("yyyyMMdd")
+                        }else{
+                            queryData = querydate.isShowTimeString("yyyyMM")
+                        }
+                        queryAreaStockReportDetail(querytype = querytype,detailtype = detailtype,querydate = queryData,wrstandardid = wrstandardid,spotgoodsbrandid = spotgoodsbrandid,spotgoodsmodelid = spotgoodsmodelid,warehouseinfoid = warehouseinfoid)
                     }
-                    queryAreaStockReportDetail(querytype = querytype,detailtype = detailtype,querydate = queryData,wrstandardid = wrstandardid,spotgoodsbrandid = spotgoodsbrandid,spotgoodsmodelid = spotgoodsmodelid,warehouseinfoid = warehouseinfoid)
                 }
             }
         }

+ 2 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/inventory/inventorymanager/adapter/InventoryCurrentAdapter.java

@@ -137,7 +137,7 @@ public class InventoryCurrentAdapter extends RecyclerView.Adapter<InventoryCurre
             intent.putExtra("isFrom","1");//从仓库管理页面进入
             intent.putExtra("detailtype","1");//入库明细
             intent.putExtra("wrstandardname",datas.get(i).getWrstandardname());
-            intent.putExtra("title", Constant.table_mobile_stock_report_in_detail);//出库明细的列头
+            intent.putExtra("title", Constant.table_mobile_stock_indetail);//出库明细的列头
             intent.putExtra("querytype","");//日报表/月报表  这里不需要传入值
             intent.putExtra("querydate","");//查询日期(格式 日报表YYYYMMDD, 月报表YYYYMM) 此处不需要传
             intent.putExtra("wrstandardid","");//现货商品ID 此处不需要传
@@ -153,7 +153,7 @@ public class InventoryCurrentAdapter extends RecyclerView.Adapter<InventoryCurre
             intent.putExtra("isFrom","1");//从仓库管理页面进入
             intent.putExtra("detailtype","2");//出库明细
             intent.putExtra("wrstandardname",datas.get(i).getWrstandardname());
-            intent.putExtra("title", Constant.table_mobile_stock_report_out_detail);//出库明细的列头
+            intent.putExtra("title", Constant.table_mobile_stock_outdetail);//出库明细的列头
             intent.putExtra("querytype","");//日报表/月报表  这里不需要传入值
             intent.putExtra("querydate","");//查询日期(格式 日报表YYYYMMDD, 月报表YYYYMM) 此处不需要传
             intent.putExtra("wrstandardid","");//现货商品ID 此处不需要传

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/registration/RegistrationViewModel.kt

@@ -107,7 +107,7 @@ class RegistrationViewModel : BaseViewModel(){
     fun setSelectWarehouseList(dataList: List<WarehouseInfoData>): ArrayList<SelectData> {
         val newCustomerList = arrayListOf<SelectData>()
         dataList.forEach {
-            newCustomerList.add(SelectData(id = it.autoid.toString() ?: "", value = it.warehousename ?: ""))
+            newCustomerList.add(SelectData(id = it.autoid.toString() ?: "", value = it.warehousecode ?: ""))
         }
         return newCustomerList
     }

+ 10 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddRoleActivity.kt

@@ -80,14 +80,12 @@ class AddRoleActivity : BaseActivity<RoleSetViewModel>() {
      */
     fun init() {
         viewModel.queryAccMgrRole()
-        if (type != "1"){
-            roleTypeSelectData.postValue(
-                SelectData(
-                    id = data.roleid ?: "",
-                    value = data.rolename ?: ""
-                )
+        roleTypeSelectData.postValue(
+            SelectData(
+                id = data1.clientroleid ?: "",
+                value = data1.rolename ?: ""
             )
-        }
+        )
     }
 
 
@@ -412,6 +410,11 @@ class AddRoleActivity : BaseActivity<RoleSetViewModel>() {
             ToastUtils.showLong("请输入登录密码")
             return false
         }
+
+        if (login_password.text.toString().length < 6){
+            ToastUtils.showLong("密码最少为6位")
+            return false
+        }
         return true
     }
 

+ 3 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/spotmarket/SpotMarketPriceViewHolder.kt

@@ -12,6 +12,7 @@ import cn.muchinfo.rma.view.autoWidget.autoSize
 import cn.muchinfo.rma.view.autoWidget.onThrottleFirstClick
 import cn.muchinfo.rma.view.autoWidget.textColorInt
 import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
 import cn.muchinfo.rma.view.base.home.contract.emptyView
 import com.blankj.utilcode.util.ActivityUtils
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
@@ -46,7 +47,7 @@ class SpotMarketPriceViewHolder(private val activity : AppCompatActivity,private
                 textView {
                     gravity = Gravity.CENTER
                     data.bindOptional(context){
-                        text = it?.wrstandardname + it?.gbenumdicname
+                        text = it?.wrstandardname
                     }
                     textSizeAuto = 30
                     textColorInt = R.color.rma_black_33
@@ -64,7 +65,7 @@ class SpotMarketPriceViewHolder(private val activity : AppCompatActivity,private
                 textView {
                     gravity = Gravity.CENTER
                     data.bindOptional(context){
-                        text = it?.spotgoodsprice
+                        text = NumberUtils.roundNum(it?.spotgoodsprice,2) + "元/" +  it?.enumdicname
                     }
                     textSizeAuto = 30
                     textColorInt = R.color.rma_black_33

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/warehouse/WarehouseInformationViewHolder.kt

@@ -172,7 +172,7 @@ class WarehouseInformationViewHolder(private val activity : AppCompatActivity,pr
                 textView {
                     if (type == "1"){
                         //判断是否有相应权限显示该功能
-                        if (GlobalDataCollection.instance?.getThreeLevelMenu(firstCode = "client_warehouse",secondCode = "client_warehouse_normal",threeCode = "client_warehouse_unenable") == true){
+                        if (GlobalDataCollection.instance?.getThreeLevelMenu(firstCode = "client_warehouse",secondCode = "client_warehouse_normal",threeCode = "client_warehouse_stop") == true){
                             visibility = View.VISIBLE
                         }else{
                             visibility = View.GONE

+ 2 - 2
RMA/app/src/main/res/layout/layout_item_content.xml

@@ -39,8 +39,8 @@
             <ImageView
                 android:id="@+id/click_icon"
                 android:layout_gravity="center_vertical"
-                android:layout_width="30dp"
-                android:layout_height="30dp"
+                android:layout_width="15dp"
+                android:layout_height="15dp"
                 android:src="@mipmap/rma_down"/>
 
         </LinearLayout>

+ 162 - 0
RMA/app/src/main/res/layout/layout_item_contract.xml

@@ -0,0 +1,162 @@
+<?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="160dp"
+            android:orientation="horizontal"
+            android:layout_height="match_parent">
+            <LinearLayout
+                android:gravity="center_vertical"
+                android:orientation="vertical"
+                android:layout_width="130dp"
+                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/contract_undo"
+            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/contract_audit"
+            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/contract_modify"
+            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/contract_completion"
+            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/contract_resubmit"
+            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:id="@+id/contract_delete"
+            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"/>
+
+        <TextView
+            android:id="@+id/contract_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"/>
+
+    </LinearLayout>
+
+</LinearLayout>

+ 29 - 19
RMA/app/src/main/res/layout/layout_item_inventory_current.xml

@@ -6,32 +6,42 @@
     android:orientation="vertical">
 
     <LinearLayout
-        android:id="@+id/exposure_all_click_View"
+        android:id="@+id/all_click_View"
         android:layout_width="match_parent"
         android:orientation="horizontal"
         android:layout_height="55dp">
 
         <LinearLayout
-            android:gravity="center_vertical"
-            android:orientation="vertical"
-            android:layout_width="100dp"
+            android:layout_width="160dp"
+            android:orientation="horizontal"
             android:layout_height="match_parent">
+            <LinearLayout
+                android:gravity="center_vertical"
+                android:orientation="vertical"
+                android:layout_width="130dp"
+                android:layout_height="match_parent">
 
-            <TextView
-                android:text="--"
-                android:layout_marginStart="10dp"
-                android:id="@+id/exposure_tv_left_title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textSize="13sp"
-                android:textColor="#333333" />
-            <TextView
-                android:layout_marginStart="10dp"
-                android:id="@+id/exposure_tv_left_bottom_title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textSize="10sp"
-                android:textColor="#333333" />
+                <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