Procházet zdrojové kódy

风险管理7月22日提交代码-liu.bolan-千海金

Liu.bolan před 4 roky
rodič
revize
dec6fb3085
17 změnil soubory, kde provedl 1098 přidání a 14 odebrání
  1. 2 2
      RMA/app/build.gradle
  2. 64 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/quote/QuoteManager.kt
  3. 134 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/OrderQuoteData.kt
  4. 61 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/OrderQuoteDetailData.kt
  5. 12 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainActivity.kt
  6. 0 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainViewModel.kt
  7. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  8. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerActivity.kt
  9. 0 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/ReportQueryActivity.kt
  10. 0 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/SpotEarningRecordAdapter.java
  11. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/reportdetail/ReportCommonDetailsActivity.kt
  12. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/reportdetail/ReportCommonDetailsViewModel.kt
  13. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/set/ResetPasswordActivity.kt
  14. 322 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/WarehouseReceiptFragment.kt
  15. 19 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/WarehouseReceiptViewModel.kt
  16. 239 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/floata/FloatPriceAdapter.java
  17. 239 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/one/OnePriceAdapter.java

+ 2 - 2
RMA/app/build.gradle

@@ -19,8 +19,8 @@ android {
         applicationId "cn.muchinfo.rma"
         minSdkVersion 24
         targetSdkVersion 30
-        versionCode 50014
-        versionName "5.0.14"
+        versionCode 50015
+        versionName "5.0.15"
         multiDexEnabled true
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         //指定room.schemaLocation生成的文件路径

+ 64 - 0
RMA/app/src/main/java/cn/muchinfo/rma/business/quote/QuoteManager.kt

@@ -3,12 +3,22 @@ package cn.muchinfo.rma.business.quote
 import cn.muchinfo.rma.business.account.adapter.AccountAdapter
 import cn.muchinfo.rma.business.quote.adapter.QuoteAdapter
 import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.AccountInOutApplyData
+import cn.muchinfo.rma.global.data.OrderQuoteData
+import cn.muchinfo.rma.global.data.OrderQuoteDetailData
+import cn.muchinfo.rma.netManage.base.ResponseCallback
+import cn.muchinfo.rma.netManage.utils.MyOkHttpUtils
 import cn.muchinfo.rma.netcore.packet.Packet40
 import cn.muchinfo.rma.netcore.packet.Packet50
 import cn.muchinfo.rma.netcore.socket.Callback
 import cn.muchinfo.rma.protobuf.classNumber.ClassNumber
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.guard
+import cn.muchinfo.rma.view.base.app.BaseResult
+import cn.muchinfo.rma.view.base.app.Constant
+import com.blankj.utilcode.util.SPUtils
+import okhttp3.Call
+import java.lang.Exception
 import java.util.concurrent.ConcurrentHashMap
 import java.util.concurrent.ConcurrentSkipListSet
 
@@ -158,4 +168,58 @@ class QuoteManager {
                 }
             })
     }
+
+
+    /**
+     * 仓单贸易 查询大厅行情列表
+     * @param params Map<String, String>
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<ContractData>?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryOrderQuote(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<OrderQuoteData>?, error: Error?) -> Unit
+    ) {
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/WrTrade2/QueryOrderQuote",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<OrderQuoteData>>>() {
+                override fun onResponse(response: BaseResult<List<OrderQuoteData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+            }
+        )
+    }
+
+
+    /**
+     * 仓单贸易 查询买卖大厅
+     * @param params Map<String, String>
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<ContractData>?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryOrderQuoteDetail(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<OrderQuoteDetailData>?, error: Error?) -> Unit
+    ) {
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/WrTrade2/QueryOrderQuoteDetail",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<OrderQuoteDetailData>>>() {
+                override fun onResponse(response: BaseResult<List<OrderQuoteDetailData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+            }
+        )
+    }
 }

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

@@ -0,0 +1,134 @@
+package cn.muchinfo.rma.global.data
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+
+/**
+ * 产能预售 大厅行情列表
+ * @property buyprice String?
+ * @property buypricemove String?
+ * @property buyqty String?
+ * @property deliverygoodscode String?
+ * @property deliverygoodsid String?
+ * @property deliverygoodsname String?
+ * @property goodscode String?
+ * @property goodsid String?
+ * @property sellprice String?
+ * @property sellpricemove String?
+ * @property sellqty String?
+ * @property warehousecode String?
+ * @property warehouseid String?
+ * @property warehousename String?
+ * @property wrfactortypeid String?
+ * @property wrfactortypename String?
+ * @property wrgoodsname String?
+ * @property wrstandardcode String?
+ * @property wrstandardid String?
+ * @property wrstandardname String?
+ * @constructor
+ */
+data class OrderQuoteData(
+    @SerializedName("buyprice")
+    val buyprice : String? = "",//买价
+    @SerializedName("buypricemove")
+    val buypricemove : String? = "",//买升贴水(基差)
+    @SerializedName("buyqty")
+    val buyqty : String? = "",//买量
+    @SerializedName("deliverygoodscode")
+    val deliverygoodscode : String? = "",//品种代码
+    @SerializedName("deliverygoodsid")
+    val deliverygoodsid : String? = "",//品种id
+    @SerializedName("deliverygoodsname")
+    val deliverygoodsname : String? = "",//品种名称
+    @SerializedName("goodscode")
+    val goodscode : String? = "",//商品合约(浮动价列表才有)
+    @SerializedName("goodsid")
+    val goodsid : String? = "",//商品id(浮动价列表才有)
+    @SerializedName("sellprice")
+    val sellprice : String? = "",//卖价
+    @SerializedName("sellpricemove")
+    val sellpricemove : String? = "",//卖升贴水(基差)
+    @SerializedName("sellqty")
+    val sellqty : String? = "",//卖量
+    @SerializedName("warehousecode")
+    val warehousecode : String? = "",//仓库代码
+    @SerializedName("warehouseid")
+    val warehouseid : String? = "",//仓库id
+    @SerializedName("warehousename")
+    val warehousename : String? = "",//仓库名称
+    @SerializedName("wrfactortypeid")
+    val wrfactortypeid : String? = "",//仓单要素id
+    @SerializedName("wrfactortypename")
+    val wrfactortypename : String? = "",//仓单要素类型名称(选择项要素的名称合并显示,逗号分隔)
+    @SerializedName("wrgoodsname")
+    val wrgoodsname : String? = "",//商品(商品名称+仓库要素名称 拼接)
+    @SerializedName("wrstandardcode")
+    val wrstandardcode : String? = "",//商品代码
+    @SerializedName("wrstandardid")
+    val wrstandardid : String? = "",//商品id
+    @SerializedName("wrstandardname")
+    val wrstandardname : String? = ""//商品名称
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(buyprice)
+        parcel.writeString(buypricemove)
+        parcel.writeString(buyqty)
+        parcel.writeString(deliverygoodscode)
+        parcel.writeString(deliverygoodsid)
+        parcel.writeString(deliverygoodsname)
+        parcel.writeString(goodscode)
+        parcel.writeString(goodsid)
+        parcel.writeString(sellprice)
+        parcel.writeString(sellpricemove)
+        parcel.writeString(sellqty)
+        parcel.writeString(warehousecode)
+        parcel.writeString(warehouseid)
+        parcel.writeString(warehousename)
+        parcel.writeString(wrfactortypeid)
+        parcel.writeString(wrfactortypename)
+        parcel.writeString(wrgoodsname)
+        parcel.writeString(wrstandardcode)
+        parcel.writeString(wrstandardid)
+        parcel.writeString(wrstandardname)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<OrderQuoteData> {
+        override fun createFromParcel(parcel: Parcel): OrderQuoteData {
+            return OrderQuoteData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<OrderQuoteData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

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

@@ -0,0 +1,61 @@
+package cn.muchinfo.rma.global.data
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+
+/**
+ * 仓单贸易 查询买卖大厅
+ */
+data class OrderQuoteDetailData(
+    @SerializedName("buyorsell")
+    val buyorsell : String? = "",//买卖 - 0:买 1:卖
+    @SerializedName("fixedprice")
+    val fixedprice : String? = "",//买(卖)价
+    @SerializedName("orderqty")
+    val orderqty : String? = "",//买(卖)量(=委托量-成交量)
+    @SerializedName("pricemove")
+    val pricemove : String? = "",//买(卖)升贴水- 基差
+    @SerializedName("userid")
+    val userid : String? = "",//购买方(销售方)用户ID
+    @SerializedName("username")
+    val username : String? = "",//购买方(销售方)
+    @SerializedName("wrtradeorderid")
+    val wrtradeorderid : String? = ""//仓单贸易委托单ID(320+Unix秒时间戳(10位)+xxxxxx)
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(buyorsell)
+        parcel.writeString(fixedprice)
+        parcel.writeString(orderqty)
+        parcel.writeString(pricemove)
+        parcel.writeString(userid)
+        parcel.writeString(username)
+        parcel.writeString(wrtradeorderid)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<OrderQuoteDetailData> {
+        override fun createFromParcel(parcel: Parcel): OrderQuoteDetailData {
+            return OrderQuoteDetailData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<OrderQuoteDetailData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

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

@@ -22,6 +22,7 @@ import cn.muchinfo.rma.view.base.procurement.ProcurementFragment
 import cn.muchinfo.rma.view.base.qhjhome.QhjHomeFragment
 import cn.muchinfo.rma.view.base.recycling.RecyclingFragment
 import cn.muchinfo.rma.view.base.sale.SaleFragment
+import cn.muchinfo.rma.view.base.warehousereceipt.WarehouseReceiptFragment
 import cn.muchinfo.rma.view.eventbus.EventConstent
 import cn.muchinfo.rma.view.eventbus.MessageEvent
 import com.blankj.utilcode.util.AppUtils
@@ -85,6 +86,11 @@ class MainActivity : BaseActivity<MainViewModel>() {
         RecyclingFragment()
     }
 
+    /** 仓单贸易 **/
+    val warehouseReceiptFragment by lazy {
+        WarehouseReceiptFragment()
+    }
+
     /** 状态控制页 **/
     private lateinit var statusLayout: StatusLayout
 
@@ -144,7 +150,6 @@ class MainActivity : BaseActivity<MainViewModel>() {
             newSelectIcon.add(R.mipmap.rma_select_main_tab_5)
         }
 
-
         if (GlobalDataCollection.instance?.getFirstLevelMenu("client_qhjbjb") == true) {
             //前海金铂金宝
             newFragments.add(platinumTreasureFragment)
@@ -169,6 +174,12 @@ class MainActivity : BaseActivity<MainViewModel>() {
             newSelectIcon.add(R.mipmap.qhj_main_tab_select)
         }
 
+        //仓单贸易
+        newFragments.add(warehouseReceiptFragment)
+        newTabText.add("仓单贸易")
+        newNormalIcon.add(R.mipmap.qhj_sphg_tab_normal)
+        newSelectIcon.add(R.mipmap.qhj_sphg_tab_select)
+
     }
 
     private val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }

+ 0 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/MainViewModel.kt

@@ -23,8 +23,6 @@ import java.lang.Exception
 
 class MainViewModel : BaseViewModel() {
 
-
-
     /**
      * 加载状态控制
      */

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

@@ -6,7 +6,7 @@ object Constant {
     /**
      * 获取基础url的接口
      */
-//    const val baseurl = "http://103.40.249.123:8280/cfg?key=mtp_20"//千海金外盘
+    const val baseurl = "http://103.40.249.123:8280/cfg?key=mtp_20"//千海金外盘
 //    const val baseurl = "http://103.40.249.127:28280/cfg?key=mtp_20"
 //    const val baseurl = "http://192.168.30.125:8080/cfg?key=test_125"
 //    const val baseurl = "http://192.168.31.114:8080/cfg?key=test_114" // shenzhen01  123123
@@ -14,7 +14,7 @@ object Constant {
 //    const val baseurl = "http://192.168.31.220:8080/cfg?key=test_220"//李倩千海金 18611112222
 
 //      const val baseurl = "http://192.168.30.211:8080/cfg?key=test_211"// 瑶姐
-          const val baseurl = "http://192.168.31.107:8080/cfg?key=test_107"// 瑶姐 千海金 13760119855
+//          const val baseurl = "http://192.168.31.107:8080/cfg?key=test_107"// 瑶姐 千海金 13760119855
 
 //    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"

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

@@ -178,6 +178,7 @@ class AccountManagerActivity : BaseActivity<AccountManagerViewModel>() {
                 marginStart = autoSize(32)
                 marginEnd = autoSize(32)
             }
+
             viewPager {
                 background = resources.getDrawable(R.color.white)
                 viewPager = this

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

@@ -878,15 +878,12 @@ class ExposureReportUI(
                     marginStart = autoSize(36)
                     marginEnd = autoSize(36)
                 }
-
             }.lparams(matchParent, autoSize(100))
 
-
             linearLayout {
                 textView {
                     backgroundResource = R.drawable.rma_time_click_bg
                     onThrottleFirstClick {
-
                         activity.creatBottomSheetDialog("请选择指定交易用户", viewModel.getCanSelectTradingAccount()) {
                             viewModel.exposureSelectTransactionUser.postValue(this)
                         }
@@ -922,7 +919,6 @@ class ExposureReportUI(
                     marginStart = autoSize(36)
                     marginEnd = autoSize(36)
                 }
-
             }.lparams(matchParent, autoSize(100))
 
 //            viewModel.queryTitle(tableKey = Constant.table_mobile_report_expose, cycletime = tradedate.replace("-", ""),cycletype = "",userid = selectTransactionUser.value?.id ?: "",querytype = "1")

+ 0 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/SpotEarningRecordAdapter.java

@@ -44,7 +44,6 @@ public class SpotEarningRecordAdapter extends RecyclerView.Adapter<SpotEarningRe
     private String querytype = "1";
     private String querydate;
 
-
     public interface OnContentScrollListener {
         void onScroll(MotionEvent event);
     }

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/reportdetail/ReportCommonDetailsActivity.kt

@@ -96,7 +96,7 @@ class ReportCommonDetailsActivity : BaseActivity<ReportCommonDetailsViewModel>()
     //数据初始化
     fun initData(){
         viewModel.queryTitle(tabName = tabtitle ?: "",userid = transactionUserid ?: "",financeReportData = financeReportData,exposureReportData = exposureReportData,areaSpotplReportData = areaSpotplReportData
-        ,areaSumPLData = areaSumPLData,areaStockReportData = areaStockReportData)
+        ,areaSumPLData = areaSumPLData,areaStockReportData = areaStockReportData,futureDataReportData = futureDataReportData)
     }
 
     override fun onCreate(savedInstanceState: Bundle?) {

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/reportdetail/ReportCommonDetailsViewModel.kt

@@ -342,7 +342,7 @@ class ReportCommonDetailsViewModel : BaseViewModel(){
                 put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
                 put("querytype","2")
                 put("cycletype",futureDataReportData.cycletype ?: "")
-                put("cycletime",futureDataReportData.cycletime ?: "")
+                put("cycletime",futureDataReportData.reckondate ?: "")
                 put("currencyid",futureDataReportData.currencyid ?: "")
                 put("goodsgroupid",futureDataReportData.goodsgroupid ?: "")
                 put("goodsid",futureDataReportData.goodsid ?: "")

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

@@ -425,6 +425,7 @@ class ResetPasswordActivity : BaseActivity<PasswordViewModel>() {
         viewModel.loadingDialogStatus.value = TaskUiModel.inFlight()
         val json = JSONObject()
         json["mobile"] = DesTools.myServiceAddPass(phone)
+        json["businessType"] = 1
         //请求验证码
         OkHttpUtils.postString()
             .url(SPUtils.getInstance().getString(Constant.commSearchUrl) + "/user/smsvcode")

+ 322 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/WarehouseReceiptFragment.kt

@@ -0,0 +1,322 @@
+package cn.muchinfo.rma.view.base.warehousereceipt
+
+import android.os.Bundle
+import android.view.*
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.BaseFragment
+import cn.muchinfo.rma.view.base.platinumtreasure.adapter.PlatnumTreasureAdapter
+import cn.muchinfo.rma.view.base.procurement.TopTabAdpater
+import cn.muchinfo.rma.view.base.warehousereceipt.one.OnePriceAdapter
+import com.blankj.utilcode.util.ConvertUtils
+import com.blankj.utilcode.util.SizeUtils
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
+import com.qmuiteam.qmui.widget.tab.QMUITabSegment
+import org.jetbrains.anko.*
+import org.jetbrains.anko.support.v4.UI
+import org.jetbrains.anko.support.v4.viewPager
+
+/**
+ * 仓单贸易报价牌
+ */
+class WarehouseReceiptFragment : BaseFragment<WarehouseReceiptViewModel>(){
+
+    lateinit var segment: QMUITabSegment
+    var selectedTabIndex: Int = 0
+    private lateinit var viewPager: ViewPager
+
+    //一口价报价牌
+    private val onePriceUI by lazy { OnePriceUI(this,viewModel) }
+
+    //浮动价报价牌
+    private val floatingPriceUI by lazy { FloatingPriceUI(this,viewModel) }
+
+    //viewpager的适配器
+    private var newPagerAdapter : PagerAdapter? = null
+
+    //tabSegment标题
+    private val newTabsArray : ArrayList<String> = arrayListOf()
+
+    //暂存的页面组
+    private val uiList : ArrayList<_FrameLayout> = arrayListOf()
+
+    fun initMenuData(){
+
+        newTabsArray.add("一口价")
+        uiList.add(onePriceUI.root)
+
+        newTabsArray.add("浮动价")
+        uiList.add(floatingPriceUI.root)
+
+        newPagerAdapter = object : PagerAdapter() {
+
+            override fun getPageTitle(position: Int): CharSequence? = newTabsArray[position]
+
+            override fun instantiateItem(container: ViewGroup, position: Int): Any {
+                return uiList.get(position).apply {
+                    container.addView(
+                        this,
+                        ViewGroup.LayoutParams(matchParent, matchParent)
+                    )
+                }
+            }
+
+            override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
+                (`object` as? View)?.let { container.removeView(it) }
+            }
+
+            override fun isViewFromObject(view: View, `object`: Any): Boolean = view == `object`
+
+            override fun getCount(): Int = newTabsArray.size
+
+        }
+
+    }
+
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+
+        return UI {
+            verticalLayout {
+                linearLayout {
+                    background = resources.getDrawable(R.color.main_title_bg_color)
+
+                    view {
+
+                    }.lparams(autoSize(200), autoSize(100))
+
+                    tabSegment {
+                        segment = this
+                        background = resources.getDrawable(R.color.segtabment_bg_color)
+                        addOnTabSelectedListener(object :
+                            QMUITabSegment.OnTabSelectedListener {
+                            override fun onDoubleTap(index: Int) {}
+                            override fun onTabReselected(index: Int) {}
+                            override fun onTabUnselected(index: Int) {}
+                            override fun onTabSelected(index: Int) {
+                                selectedTabIndex = index
+                            }
+                        })
+                        setIndicator(
+                            QMUITabIndicator(
+                                QMUIDisplayHelper.dp2px(context, 2),
+                                false,
+                                true
+                            )
+                        )
+                        setDefaultTextSize(ConvertUtils.sp2px(16f), ConvertUtils.sp2px(16f))
+                    }.lparams(matchParent, autoSize(100))
+
+                    view {
+
+                    }.lparams(autoSize(200), autoSize(100))
+                }.lparams(matchParent, autoSize(100))
+
+                view {
+                    background = resources.getDrawable(R.color.main_hit_bg_color)
+                }.lparams(matchParent, autoSize(1)) {
+                    marginStart = autoSize(32)
+                    marginEnd = autoSize(32)
+                }
+                viewPager {
+                    background = resources.getDrawable(R.color.white)
+                    viewPager = this
+                    adapter = newPagerAdapter
+                }.lparams(matchParent, matchParent)
+
+                segment.setupWithViewPager(viewPager)
+                segment.selectTab(1)
+            }
+        }.view
+
+    }
+
+}
+
+/**
+ * 一口价报价牌
+ * @property fragment Fragment
+ * @property viewModel WarehouseReceiptViewModel
+ * @constructor
+ */
+class OnePriceUI(private val fragment : Fragment,private val viewModel: WarehouseReceiptViewModel) : OnePriceAdapter.OnContentScrollListener{
+
+    private lateinit var swipeToLayout: SwipeToLoadLayout
+    private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
+
+    lateinit var dataRecyclerview : RecyclerView
+
+
+    //标题头部
+    val topAdapter by lazy {
+        TopTabAdpater(fragment.context)
+    }
+
+    val onePriceAdapter by lazy {
+        OnePriceAdapter(fragment.context)
+    }
+
+    val root = _FrameLayout(fragment.context!!).apply {
+        verticalLayout {
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//待点价头部左侧数据
+//                            viewModel.titleList.bindOptional(context) {
+//                                text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+//                            }
+                        text = "商品"
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 31
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(SizeUtils.dp2px(100f)), autoSize(100))
+                onePriceAdapter.setOnContentScrollListener(this@OnePriceUI)
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    setOnCustomScrollChangeListener { listener, scrollX, scrollY, oldScrollX, oldScrollY -> //代码重复,可以抽取/////
+                        onePriceAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<OnePriceAdapter.ItemViewHolder> =
+                            onePriceAdapter.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.titleList.bindOptional(context) {
+//                                val titleStringList = arrayListOf<String>()
+//                                it?.subList(1, it.size)?.forEach { data ->
+//                                    titleStringList.add(data.columntitle?.replace("\\n", "\n") ?: "")
+//                                }
+//                                topAdapter.setDatas(titleStringList)
+//                            }
+                        topAdapter.setDatas(arrayListOf("卖价","卖量","买价","买量","仓库"))
+                    }
+                }.lparams(matchParent, matchParent)
+            }.lparams(matchParent, autoSize(100))
+
+            statusLayout(contentBlock = {
+                statusLayout = this
+                setRetryAction {
+
+                }
+
+                swipeToLoadLayout {
+                    swipeToLayout = this
+                    setEnableRefresh(true)
+                    setEnableLoadMore(false)
+                    setOnRefreshListener {
+
+                    }
+                    setEnableScrollContentWhenLoaded(false)
+                    setEnableLoadMoreWhenContentNotFull(false)
+
+                    recyclerView {//待点价列表
+                        dataRecyclerview = this
+                        background = resources.getDrawable(R.color.white)
+                        adapter = onePriceAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<OnePriceAdapter.ItemViewHolder> =
+                                    onePriceAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                            onePriceAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
+                                super.onScrollStateChanged(recyclerView, newState)
+                                // DES: 找出当前可视Item位置
+                                val linearLayoutManager = dataRecyclerview!!.layoutManager as LinearLayoutManager
+                                if (newState == RecyclerView.SCROLL_STATE_IDLE) {// 这个判断是当recyclerview不滚动时
+
+                                }
+                            }
+                        })
+                    }
+
+
+                }
+            }, emptyBlock = {
+                emptyView(hint = resources.getString(R.string.now_no_data))
+            }).lparams(matchParent, matchParent)
+
+            viewModel.floatProceDataList.bindOptional(context) {
+//                if (it?.size ?: 0 > 10){
+//                    lastShow = 10
+//                }else{
+//                    lastShow = it?.size ?: 0
+//                }
+                if (it?.isEmpty() == true || it?.size == 0) {
+                    statusLayout.showEmpty()
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
+                        swipeToLayout.finishRefresh()
+//                        mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
+                    }
+                    statusLayout.showSuccess()
+                    onePriceAdapter.setDatas(it)
+                }
+            }
+        }
+    }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
+
+}
+
+/**
+ * 浮动价报价牌
+ * @property fragment Fragment
+ * @property viewModel WarehouseReceiptViewModel
+ * @property root _FrameLayout
+ * @constructor
+ */
+class FloatingPriceUI(private val fragment : Fragment,private val viewModel: WarehouseReceiptViewModel){
+    val root = _FrameLayout(fragment.context!!).apply {
+        verticalLayout {
+
+        }
+    }
+
+}

+ 19 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/WarehouseReceiptViewModel.kt

@@ -0,0 +1,19 @@
+package cn.muchinfo.rma.view.base.warehousereceipt
+
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.data.OrderQuoteData
+import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
+import cn.muchinfo.rma.view.base.BaseViewModel
+
+/**
+ * 仓单贸易页面viewmodel
+ */
+class WarehouseReceiptViewModel : BaseViewModel(){
+
+    //一口价报价牌数据
+    val onePrcieDataList : MutableLiveData<List<OrderQuoteData>> = MutableLiveData()
+
+    //浮动价报价牌数据
+    val floatProceDataList : MutableLiveData<List<OrderQuoteData>> = MutableLiveData()
+
+}

+ 239 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/floata/FloatPriceAdapter.java

@@ -0,0 +1,239 @@
+package cn.muchinfo.rma.view.base.warehousereceipt.floata;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.blankj.utilcode.util.ActivityUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cn.muchinfo.rma.R;
+import cn.muchinfo.rma.global.GlobalDataCollection;
+import cn.muchinfo.rma.global.data.ContractTradePositionData;
+import cn.muchinfo.rma.global.data.GoodsInfoAndQuotes;
+import cn.muchinfo.rma.global.data.OrderQuoteData;
+import cn.muchinfo.rma.global.data.QuoteDayData;
+import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo;
+import cn.muchinfo.rma.global.database.DataBase;
+import cn.muchinfo.rma.global.utils.TimeUtils;
+import cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView;
+import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils;
+import cn.muchinfo.rma.view.base.chart.ChartActivity;
+import cn.muchinfo.rma.view.base.platinumtreasure.PlatinumTrasureDetailsActivity;
+import cn.muchinfo.rma.view.base.platinumtreasure.adapter.QHjRightData;
+import cn.muchinfo.rma.view.base.platinumtreasure.adapter.QhjRightScrollAdapter;
+import cn.muchinfo.rma.view.base.platinumtreasure.trade.PlatinumTradeActivity;
+
+/**
+ * 用于千海金铂金宝页面额adapter
+ */
+public class FloatPriceAdapter extends RecyclerView.Adapter<FloatPriceAdapter.ItemViewHolder> {
+
+    private Context context;
+    private List<OrderQuoteData> datas;
+    private int index = -1;
+    private int position = -1;
+    private List<ItemViewHolder> mViewHolderList = new ArrayList<>();
+    public int offestX = 0;
+    private OnContentScrollListener onContentScrollListener;
+
+
+    public interface OnContentScrollListener {
+        void onScroll(MotionEvent event);
+    }
+
+    public void setOnContentScrollListener(OnContentScrollListener onContentScrollListener) {
+        this.onContentScrollListener = onContentScrollListener;
+    }
+
+    public FloatPriceAdapter(Context context) {
+        this.context = context;
+    }
+
+    public void setDatas(List<OrderQuoteData> 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_platinum_content, viewGroup, false);
+        return new ItemViewHolder(view);
+    }
+
+    //回购 买一价  销售 卖一价
+    @SuppressLint("SetTextI18n")
+    @Override
+    public void onBindViewHolder(@NonNull final ItemViewHolder itemViewHolder, int i) {
+        this.index = i;
+        OrderQuoteData data = datas.get(i);
+        itemViewHolder.tvLeftTitle.setText(data.getDeliverygoodsname() + "\n" + data.getWrstandardname());
+        //右边滑动部分
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
+        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
+        itemViewHolder.rvItemRight.setLayoutManager(linearLayoutManager);
+        itemViewHolder.rvItemRight.setHasFixedSize(true);
+        QhjRightScrollAdapter qhjRightScrollAdapter = new QhjRightScrollAdapter(context);//右部数据
+        List<QHjRightData> rightData = new ArrayList<>();
+        //获取盘面信息
+        QuoteDayData quoteDayData = null;//当前商品的盘面信息(有用的只有买一卖一价即回购销售价,其他信息用关联商品的)
+
+//        ContractTradePositionData positionData = null;
+//        List<ContractTradePositionData> positionDataList = GlobalDataCollection.Companion.getInstance().getContractTradePositionDataArrayList();
+//        for (int j = 0;j < positionDataList.size();j++){
+//            if (String.valueOf(data.getGoodsid()).equals(positionDataList.get(j).getGoodsid())){
+//                positionData = positionDataList.get(j);
+//            }
+//        }
+//        if (positionData == null){
+//            itemViewHolder.platnum_sell.setVisibility(View.GONE);
+//        }else {
+//            itemViewHolder.platnum_sell.setVisibility(View.VISIBLE);
+//        }
+
+
+        qhjRightScrollAdapter.setDatas(rightData);
+        itemViewHolder.rvItemRight.setAdapter(qhjRightScrollAdapter);
+        //缓存当前holder
+        if (!mViewHolderList.contains(itemViewHolder)) {
+            mViewHolderList.add(itemViewHolder);
+        }
+        if (i == this.position) {
+            itemViewHolder.roots_view.setBackgroundColor(context.getResources().getColor(R.color.qhj_click_bg));
+            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(view -> setPosition(i));
+//        itemViewHolder.horItemScrollview.setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View view) {
+//                setPosition(i);
+//            }
+//        });
+        //买入点击
+        itemViewHolder.platnum_buy.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+        //卖出点击
+        itemViewHolder.platnum_sell.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+        //图表点击
+        itemViewHolder.platnum_chart.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+
+        //详情点击
+        itemViewHolder.platnum_details.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+
+        itemViewHolder.horItemScrollview.setEventListener(new CustomHorizontalScrollView.EventListener() {
+            @Override
+            public void onEvent(MotionEvent event) {
+                if (null != onContentScrollListener) onContentScrollListener.onScroll(event);
+            }
+        });
+        //由于viewHolder的缓存,在1级缓存取出来是2个viewholder,并且不会被重新赋值,所以这里需要处理缓存的viewholder的位移
+        itemViewHolder.horItemScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+            @Override
+            public void onGlobalLayout() {
+                if (!itemViewHolder.isLayoutFinish()) {
+                    itemViewHolder.horItemScrollview.scrollTo(offestX, 0);
+                    itemViewHolder.setLayoutFinish(true);
+                }
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return null == datas ? 0 : datas.size();
+    }
+
+    public List<ItemViewHolder> getViewHolderCacheList() {
+        return mViewHolderList;
+    }
+
+    public int getOffestX() {
+        return offestX;
+    }
+
+    public static class ItemViewHolder extends RecyclerView.ViewHolder {
+        LinearLayout roots_view;//根部布局
+        TextView platnum_buy;//买入
+        TextView platnum_sell;//卖出
+        TextView platnum_chart;//图表
+        TextView platnum_details;//详情
+        LinearLayout allView;//隐藏的底部操作空间
+        LinearLayout all_click_View;//item左侧点击控件
+        TextView tvLeftTitle;//左边销售方字段
+        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);
+            click_icon = itemView.findViewById(R.id.click_icon);
+            platnum_buy = itemView.findViewById(R.id.platnum_buy);
+            platnum_sell = itemView.findViewById(R.id.platnum_sell);
+            platnum_chart = itemView.findViewById(R.id.platnum_chart);
+            platnum_details = itemView.findViewById(R.id.platnum_details);
+            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);
+            all_click_View = itemView.findViewById(R.id.all_click_View);
+            roots_view = itemView.findViewById(R.id.roots_view);
+        }
+    }
+}

+ 239 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/warehousereceipt/one/OnePriceAdapter.java

@@ -0,0 +1,239 @@
+package cn.muchinfo.rma.view.base.warehousereceipt.one;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.blankj.utilcode.util.ActivityUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cn.muchinfo.rma.R;
+import cn.muchinfo.rma.global.GlobalDataCollection;
+import cn.muchinfo.rma.global.data.ContractTradePositionData;
+import cn.muchinfo.rma.global.data.GoodsInfoAndQuotes;
+import cn.muchinfo.rma.global.data.OrderQuoteData;
+import cn.muchinfo.rma.global.data.QuoteDayData;
+import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo;
+import cn.muchinfo.rma.global.database.DataBase;
+import cn.muchinfo.rma.global.utils.TimeUtils;
+import cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView;
+import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils;
+import cn.muchinfo.rma.view.base.chart.ChartActivity;
+import cn.muchinfo.rma.view.base.platinumtreasure.PlatinumTrasureDetailsActivity;
+import cn.muchinfo.rma.view.base.platinumtreasure.adapter.QHjRightData;
+import cn.muchinfo.rma.view.base.platinumtreasure.adapter.QhjRightScrollAdapter;
+import cn.muchinfo.rma.view.base.platinumtreasure.trade.PlatinumTradeActivity;
+
+/**
+ * 用于千海金铂金宝页面额adapter
+ */
+public class OnePriceAdapter extends RecyclerView.Adapter<OnePriceAdapter.ItemViewHolder> {
+
+    private Context context;
+    private List<OrderQuoteData> datas;
+    private int index = -1;
+    private int position = -1;
+    private List<ItemViewHolder> mViewHolderList = new ArrayList<>();
+    public int offestX = 0;
+    private OnContentScrollListener onContentScrollListener;
+
+
+    public interface OnContentScrollListener {
+        void onScroll(MotionEvent event);
+    }
+
+    public void setOnContentScrollListener(OnContentScrollListener onContentScrollListener) {
+        this.onContentScrollListener = onContentScrollListener;
+    }
+
+    public OnePriceAdapter(Context context) {
+        this.context = context;
+    }
+
+    public void setDatas(List<OrderQuoteData> 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_platinum_content, viewGroup, false);
+        return new ItemViewHolder(view);
+    }
+
+    //回购 买一价  销售 卖一价
+    @SuppressLint("SetTextI18n")
+    @Override
+    public void onBindViewHolder(@NonNull final ItemViewHolder itemViewHolder, int i) {
+        this.index = i;
+        OrderQuoteData data = datas.get(i);
+        itemViewHolder.tvLeftTitle.setText(data.getDeliverygoodsname() + "\n" + data.getWrstandardname());
+
+        //右边滑动部分
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
+        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
+        itemViewHolder.rvItemRight.setLayoutManager(linearLayoutManager);
+        itemViewHolder.rvItemRight.setHasFixedSize(true);
+        QhjRightScrollAdapter qhjRightScrollAdapter = new QhjRightScrollAdapter(context);
+        List<QHjRightData> rightData = new ArrayList<>();
+        //获取盘面信息
+        QuoteDayData quoteDayData = null;//当前商品的盘面信息(有用的只有买一卖一价即回购销售价,其他信息用关联商品的)
+
+
+        ContractTradePositionData positionData = null;
+        List<ContractTradePositionData> positionDataList = GlobalDataCollection.Companion.getInstance().getContractTradePositionDataArrayList();
+        for (int j = 0;j < positionDataList.size();j++){
+            if (String.valueOf(data.getGoodsid()).equals(positionDataList.get(j).getGoodsid())){
+                positionData = positionDataList.get(j);
+            }
+        }
+        if (positionData == null){
+            itemViewHolder.platnum_sell.setVisibility(View.GONE);
+        }else {
+            itemViewHolder.platnum_sell.setVisibility(View.VISIBLE);
+        }
+        qhjRightScrollAdapter.setDatas(rightData);
+        itemViewHolder.rvItemRight.setAdapter(qhjRightScrollAdapter);
+        //缓存当前holder
+        if (!mViewHolderList.contains(itemViewHolder)) {
+            mViewHolderList.add(itemViewHolder);
+        }
+        if (i == this.position) {
+            itemViewHolder.roots_view.setBackgroundColor(context.getResources().getColor(R.color.qhj_click_bg));
+            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(view -> setPosition(i));//没有点击展开
+        itemViewHolder.horItemScrollview.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                setPosition(i);
+            }
+        });
+        //买入点击
+        itemViewHolder.platnum_buy.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+        //卖出点击
+        itemViewHolder.platnum_sell.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+        //图表点击
+        itemViewHolder.platnum_chart.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+
+        //详情点击
+        itemViewHolder.platnum_details.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+
+        itemViewHolder.horItemScrollview.setEventListener(new CustomHorizontalScrollView.EventListener() {
+            @Override
+            public void onEvent(MotionEvent event) {
+                if (null != onContentScrollListener) onContentScrollListener.onScroll(event);
+            }
+        });
+        //由于viewHolder的缓存,在1级缓存取出来是2个viewholder,并且不会被重新赋值,所以这里需要处理缓存的viewholder的位移
+        itemViewHolder.horItemScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+            @Override
+            public void onGlobalLayout() {
+                if (!itemViewHolder.isLayoutFinish()) {
+                    itemViewHolder.horItemScrollview.scrollTo(offestX, 0);
+                    itemViewHolder.setLayoutFinish(true);
+                }
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return null == datas ? 0 : datas.size();
+    }
+
+    public List<ItemViewHolder> getViewHolderCacheList() {
+        return mViewHolderList;
+    }
+
+    public int getOffestX() {
+        return offestX;
+    }
+
+    public static class ItemViewHolder extends RecyclerView.ViewHolder {
+        LinearLayout roots_view;//根部布局
+        TextView platnum_buy;//买入
+        TextView platnum_sell;//卖出
+        TextView platnum_chart;//图表
+        TextView platnum_details;//详情
+        LinearLayout allView;//隐藏的底部操作空间
+        LinearLayout all_click_View;//item左侧点击控件
+        TextView tvLeftTitle;//左边销售方字段
+        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);
+            click_icon = itemView.findViewById(R.id.click_icon);
+            platnum_buy = itemView.findViewById(R.id.platnum_buy);
+            platnum_sell = itemView.findViewById(R.id.platnum_sell);
+            platnum_chart = itemView.findViewById(R.id.platnum_chart);
+            platnum_details = itemView.findViewById(R.id.platnum_details);
+            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);
+            all_click_View = itemView.findViewById(R.id.all_click_View);
+            roots_view = itemView.findViewById(R.id.roots_view);
+        }
+    }
+}