Explorar el Código

风险管理10月29日提交代码-liu.bolan-天津麦顿/企业风管6期开发

Liu.bolan hace 4 años
padre
commit
03208efe6d
Se han modificado 29 ficheros con 1431 adiciones y 110 borrados
  1. 2 2
      RMA/app/build.gradle
  2. 4 0
      RMA/app/src/main/AndroidManifest.xml
  3. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/spot/SpotAdapter.kt
  4. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/spot/SpotManager.kt
  5. 27 1
      RMA/app/src/main/java/cn/muchinfo/rma/global/StringUtils.kt
  6. 3 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/ParamChangeAppData.kt
  7. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/dialog/Dialog.kt
  8. 8 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  9. 5 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/HnstMainFragment.kt
  10. 560 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/flow/CommodityModificationFlowActivity.kt
  11. 204 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/flow/CommodityModificationFlowViewModel.kt
  12. 190 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/flow/ModificationFlowContentAdapter.java
  13. 14 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeGoodsActivity.kt
  14. 36 14
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeGoodsParameterActivity.kt
  15. 8 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeHedgeRatioActivity.kt
  16. 36 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeRateActivity.kt
  17. 22 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeSpotVarietyActivity.kt
  18. 131 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ModifyViewModel.kt
  19. 19 15
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/newcommodity/DemoViewHolder.kt
  20. 45 23
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/newcommodity/NewCommodityInformationActivity.kt
  21. 48 11
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/newcommodity/SpotCategoryViewHolder.kt
  22. 22 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/newcommodity/SpotHedgeViewHolder.kt
  23. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/PeriodAssociatedFragment.kt
  24. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/BusinessAssociationsViewHolder.kt
  25. 6 6
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleAssociationsViewHolder.kt
  26. 25 6
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleConnectionActivity.kt
  27. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleConnectionViewModel.kt
  28. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/relationalrecord/RelationalRecordContentAdapter.java
  29. 2 2
      RMA/app/src/main/res/layout/association_layout_item_content.xml

+ 2 - 2
RMA/app/build.gradle

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

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

@@ -514,6 +514,10 @@
 
         <activity android:name=".view.base.spot.associated.relationalrecord.RemoveRelationalRecordActivity"/>
 
+        <activity android:name=".view.base.home.ductaudit.DuctAuditActivity"/>
+
+        <activity android:name=".view.base.home.commodity.flow.CommodityModificationFlowActivity"/>
+
     </application>
 
 </manifest>

+ 2 - 1
RMA/app/src/main/java/cn/muchinfo/rma/business/spot/SpotAdapter.kt

@@ -137,6 +137,7 @@ object SpotAdapter {
      * 补录内部成交单请求
      */
     fun getManageAmendOrderReqInfo(
+        marketId : Int = 0,
         OutTradeID : Long = 0,//外部成交单号
         AccountID : Long = 0,//内部期货子账户
         BuyOrSell : Int = 0,//方向 - 0:买 1:卖
@@ -158,7 +159,7 @@ object SpotAdapter {
                 loginInfo.userID,
                 AccountID,
                 GoodsID,
-                18
+                marketId
             )
         )
         builder.outTradeID = OutTradeID

+ 2 - 1
RMA/app/src/main/java/cn/muchinfo/rma/business/spot/SpotManager.kt

@@ -429,6 +429,7 @@ class SpotManager {
      * @param BizSubjectID Int
      */
     fun manageAmendOrderReq(
+        marketId : Int = 0,
         OutTradeID : Long = 0,//外部成交单号
         AccountID : Long = 0,//内部期货子账户
         BuyOrSell : Int = 0,//方向 - 0:买 1:卖
@@ -449,7 +450,7 @@ class SpotManager {
         }
 
         val reqPacket = SpotAdapter.getManageAmendOrderReqInfo(
-            OutTradeID, AccountID, BuyOrSell, GoodsID, ChannelBuildType, CloseType, TradePrice, TradeQty, HedgeFlag, SpotContractID, SaleUserID, BizSubjectID
+            marketId, OutTradeID, AccountID, BuyOrSell, GoodsID, ChannelBuildType, CloseType, TradePrice, TradeQty, HedgeFlag, SpotContractID, SaleUserID, BizSubjectID
         )
 
         tradeSocketManager.send(

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

@@ -692,7 +692,33 @@ fun String.agreementapplystatus() : String{
     return str
 }
 
-
+/**
+ * 增值税税率修改状态  1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
+ */
+fun String.applyFlowstatus() : String{
+    if (this.isNullOrEmpty()){
+        return "--"
+    }
+    var str = ""
+    when {
+        this == "1" -> {
+            str = "待审核"
+        }
+        this == "2" -> {
+            str = "审核通过"
+        }
+        this == "3" -> {
+            str = "审核拒绝"
+        }
+        this == "4" -> {
+            str = "处理失败"
+        }
+        this == "5" -> {
+            str = "已撤回"
+        }
+    }
+    return str
+}
 
 /**
  * 融资管理申请单状态

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

@@ -65,6 +65,7 @@ data class ParamChangeAppData(
     val wrstandardid : String? = "",//现货商品ID [ParamChangeType = 1,2,3]
     @SerializedName("wrstandardname")
     val wrstandardname : String? = "",//现货商品名称
+    var rightData : List<String>? = arrayListOf(),//组装的右侧数据
     var isClick : Int = 0
 ) : Parcelable{
     constructor(parcel: Parcel) : this(
@@ -95,6 +96,7 @@ data class ParamChangeAppData(
         parcel.readString(),
         parcel.readString(),
         parcel.readString(),
+        parcel.createStringArrayList(),
         parcel.readInt()
     ) {
     }
@@ -127,6 +129,7 @@ data class ParamChangeAppData(
         parcel.writeString(wrstandardcode)
         parcel.writeString(wrstandardid)
         parcel.writeString(wrstandardname)
+        parcel.writeStringList(rightData)
         parcel.writeInt(isClick)
     }
 

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

@@ -587,5 +587,6 @@ data class SelectData(
     var areauserid: String = "",//现货areauserid
     var enumdicname: String = "",//现货商品的单位名称
     var convertfactor: String = "",//标仓系数
-    var username : String = ""//交易用户
+    var username : String = "",//交易用户
+    var agreeunit : String = ""//合约单位
 )

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

@@ -15,13 +15,13 @@ object Constant {
 
 //    const val baseurl = "http://192.168.31.93:8080/cfg?key=test_93"//李倩企业风管 18611112222
 //    const val baseurl = "http://192.168.31.104:8080/cfg?key=test_104"//李倩云融 18611112222
-    const val baseurl = "http://192.168.31.203:8080/cfg?key=test_203"//李倩云融 18611112222
+//    const val baseurl = "http://192.168.31.203:8080/cfg?key=test_203"//李倩云融 18611112222
 //
 //    const val baseurl = "http://192.168.31.204:8080/cfg?key=test_204"// 瑶姐 云融 190000000001 123456
 
 //    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"
-//    const val baseurl = "http://192.168.31.139:8080/cfg?key=test_139"// 邓工
+    const val baseurl = "http://192.168.31.139:8080/cfg?key=test_139"// 邓工
 //
 //    const val baseurl = "http://192.168.31.176:8080/cfg?key=test_176" // 9999  123123  黄老板千海金
 //    const val baseurl = "http://192.168.31.171:8080/cfg?key=test_171" // 邓工 签约解约环境
@@ -340,6 +340,12 @@ object Constant {
     /** 云融大宗-贸易圈 **/
     const val table_mobile_yrdz_myq = "table_mobile_yrdz_myq"
 
+    /** 现货商品-修改流水-增值税税率 **/
+    const val table_mobile_delivery_log_taxrate = "table_mobile_delivery_log_taxrate"
+    /** 现货商品-修改流水-折算系数 **/
+    const val table_mobile_delivery_log_coefficient = "table_mobile_delivery_log_coefficient"
+    /** 现货商品-修改流水-成本权重 **/
+    const val table_mobile_delivery_log_costweight = "table_mobile_delivery_log_costweight"
     /**--------------------------------------------------------------------------------------**/
 
     const val FISTOPENAPP = "first_open_app"

+ 5 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/HnstMainFragment.kt

@@ -1238,6 +1238,11 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                          itemView()
 
                         linearLayout {
+                            if (SPUtils.getInstance().getString(Constant.oem) == "tjmd"){
+                                visibility = View.VISIBLE
+                            }else{
+                                visibility = View.GONE
+                            }
                             gravity = Gravity.CENTER_VERTICAL
                             onThrottleFirstClick {
                                 val intent = Intent()

+ 560 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/flow/CommodityModificationFlowActivity.kt

@@ -1,28 +1,584 @@
 package cn.muchinfo.rma.view.base.home.commodity.flow
 
 import android.os.Bundle
-import cn.muchinfo.rma.view.autoWidget.commonLeftButton
-import cn.muchinfo.rma.view.autoWidget.commonTitle
-import cn.muchinfo.rma.view.autoWidget.topBar
+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
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.DeliveryGoodsDetailData
+import cn.muchinfo.rma.global.data.XhWrstandard
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
-import org.jetbrains.anko.verticalLayout
+import cn.muchinfo.rma.view.base.home.inventory.inventoryaudit.InStorage
+import cn.muchinfo.rma.view.base.home.inventory.inventoryaudit.InventoryContentAdapter
+import cn.muchinfo.rma.view.base.home.inventory.inventoryaudit.OutStorage
+import cn.muchinfo.rma.view.base.procurement.TopTabAdpater
+import com.blankj.utilcode.util.ConvertUtils
+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.viewPager
 
 /**
  * 商品修改流水页面
  */
 class CommodityModificationFlowActivity : BaseActivity<CommodityModificationFlowViewModel>(){
 
+    val data by lazy { intent.getParcelableExtra<XhWrstandard>("data") as XhWrstandard }
+
+    val deliveryGoodsDetailData by lazy { intent.getParcelableExtra<DeliveryGoodsDetailData>("deliveryGoodsDetailData") as DeliveryGoodsDetailData }
+
+
+    lateinit var segment: QMUITabSegment
+    var selectedTabIndex: Int = 0
+    private lateinit var viewPager: ViewPager
+
+    //增值税税率
+    private val vatRateUI by lazy { VatRateUI(this,viewModel,data,deliveryGoodsDetailData) }
+    //折算系数
+    private val convertCoefficientUI by lazy { ConvertCoefficientUI(this,viewModel,data,deliveryGoodsDetailData) }
+    //成本权重
+    private val costWeightUI by lazy { CostWeightUI(this,viewModel,data,deliveryGoodsDetailData) }
+
+    //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(vatRateUI.root)
+
+        newTabsArray.add("折算系数")
+        uiList.add(convertCoefficientUI.root)
+
+        newTabsArray.add("成本权重")
+        uiList.add(costWeightUI.root)
+
+        newPagerAdapter = object : PagerAdapter() {
+
+            override fun getPageTitle(position: Int): CharSequence? = newTabsArray[position]
+
+            override fun instantiateItem(container: ViewGroup, position: Int): Any {
+                return uiList.get(position).apply {
+                    container.addView(
+                        this,
+                        ViewGroup.LayoutParams(matchParent, matchParent)
+                    )
+                }
+            }
+
+            override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
+                (`object` as? View)?.let { container.removeView(it) }
+            }
+
+            override fun isViewFromObject(view: View, `object`: Any): Boolean = view == `object`
+
+            override fun getCount(): Int = newTabsArray.size
+
+        }
+
+    }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            initMenuData()
             topBar {
                 commonLeftButton()
                 commonTitle{
                     text = "修改流水"
                 }
             }
+
+            tabSegment {
+                segment = this
+                background = resources.getDrawable(R.color.segtabment_bg_color)
+                addOnTabSelectedListener(object :
+                    QMUITabSegment.OnTabSelectedListener {
+                    override fun onDoubleTap(index: Int) {}
+                    override fun onTabReselected(index: Int) {}
+                    override fun onTabUnselected(index: Int) {}
+                    override fun onTabSelected(index: Int) {
+                        selectedTabIndex = index
+                    }
+                })
+                setIndicator(
+                    QMUITabIndicator(
+                        QMUIDisplayHelper.dp2px(context, 2),
+                        false,
+                        true
+                    )
+                )
+                setDefaultTextSize(ConvertUtils.sp2px(16f), ConvertUtils.sp2px(16f))
+            }.lparams(matchParent, autoSize(80))
+
+            view {
+                background = resources.getDrawable(R.color.main_hit_bg_color)
+            }.lparams(matchParent, autoSize(1)) {
+                marginStart = autoSize(32)
+                marginEnd = autoSize(32)
+            }
+            viewPager {
+                background = resources.getDrawable(R.color.white)
+                viewPager = this
+                adapter = newPagerAdapter
+            }.lparams(matchParent, matchParent)
+
+            segment.setupWithViewPager(viewPager)
+            segment.selectTab(selectedTabIndex)
         }
     }
 
 }
 
+/**
+ * 增值税税率流水
+ * @property activity AppCompatActivity
+ * @property viewModel CommodityModificationFlowViewModel
+ * @constructor
+ */
+class VatRateUI(private val activity : AppCompatActivity,private val viewModel: CommodityModificationFlowViewModel,private val data :  XhWrstandard,private val deliveryGoodsDetailData : DeliveryGoodsDetailData) : ModificationFlowContentAdapter.OnContentScrollListener{
+
+
+    private lateinit var swipeToLayout: SwipeToLoadLayout
+    private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
+
+    val topAdapter by lazy {
+        TopTabAdpater(activity)
+    }
+
+    val exposureContentAdapter by lazy {
+        ModificationFlowContentAdapter(activity)
+    }
+
+
+    val root = _FrameLayout(activity).apply {
+        verticalLayout {
+            viewModel.queryRateTitle(deliverygoodsid = deliveryGoodsDetailData.deliverygoodsid ?: "",wrstandardid = data.wrstandardid ?: "")
+            exposureContentAdapter.setOnContentScrollListener(this@VatRateUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//头部右侧数据
+                        viewModel.rateTitleDataList.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent) {
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(250), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    /**
+                     * 用来同步内容列表的item左右滑动
+                     */
+                    setOnCustomScrollChangeListener { listener, scrollX, scrollY, oldScrollX, oldScrollY ->
+                        exposureContentAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<ModificationFlowContentAdapter.ItemViewHolder> =
+                            exposureContentAdapter.viewHolderCacheList
+                        if (null != viewHolderCacheList) {
+                            val size = viewHolderCacheList.size
+                            for (i in 0 until size) {
+                                viewHolderCacheList[i].exposure_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.rateTitleDataList.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
+//                bindTaskStatus(viewModule.status)
+                swipeToLoadLayout {
+                    swipeToLayout = this
+                    setEnableRefresh(true)
+                    setEnableLoadMore(false)
+                    setOnRefreshListener {
+                        /**
+                         * 下拉刷新
+                         */
+                        viewModel.queryRateDataList(deliverygoodsid = deliveryGoodsDetailData.deliverygoodsid ?: "",wrstandardid = data.wrstandardid ?: "")
+                    }
+                    setEnableScrollContentWhenLoaded(false)
+                    setEnableLoadMoreWhenContentNotFull(false)
+
+                    recyclerView {
+                        background = resources.getDrawable(R.color.white)
+                        adapter = exposureContentAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<ModificationFlowContentAdapter.ItemViewHolder> =
+                                    exposureContentAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].exposure_horItemScrollview.scrollTo(
+                                            exposureContentAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+                }
+            }, emptyBlock = {
+                emptyView(hint = resources.getString(R.string.now_no_data))
+            }).lparams(matchParent, matchParent)
+
+
+            //出库待审核
+            viewModel.rateContentDataList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
+                    statusLayout.showEmpty()
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
+                        swipeToLayout.finishRefresh()
+                    }
+                    statusLayout.showSuccess()
+                    exposureContentAdapter.setDatas(it)
+                }
+            }
+        }
+    }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
+
+}
+
+/**
+ * 折算系数页面ui
+ * @property activity AppCompatActivity
+ * @property viewModel CommodityModificationFlowViewModel
+ * @property swipeToLayout SwipeToLoadLayout
+ * @property statusLayout StatusLayout
+ * @property horScrollview CustomHorizontalScrollView
+ * @property recyclerView RecyclerView
+ * @property topAdapter TopTabAdpater
+ * @property exposureContentAdapter ModificationFlowContentAdapter
+ * @property root _FrameLayout
+ * @constructor
+ */
+class ConvertCoefficientUI(private val activity : AppCompatActivity,private val viewModel: CommodityModificationFlowViewModel,private val data :  XhWrstandard,private val deliveryGoodsDetailData : DeliveryGoodsDetailData) : ModificationFlowContentAdapter.OnContentScrollListener{
+
+
+    private lateinit var swipeToLayout: SwipeToLoadLayout
+    private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
+
+    val topAdapter by lazy {
+        TopTabAdpater(activity)
+    }
+
+    val exposureContentAdapter by lazy {
+        ModificationFlowContentAdapter(activity)
+    }
+
+
+    val root = _FrameLayout(activity).apply {
+        verticalLayout {
+            viewModel.queryConvertCoefficientTitle(deliverygoodsid = deliveryGoodsDetailData.deliverygoodsid ?: "",wrstandardid = data.wrstandardid ?: "")
+            exposureContentAdapter.setOnContentScrollListener(this@ConvertCoefficientUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//头部右侧数据
+                        viewModel.convertCoefficientTitleDataList.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent) {
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(250), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    /**
+                     * 用来同步内容列表的item左右滑动
+                     */
+                    setOnCustomScrollChangeListener { listener, scrollX, scrollY, oldScrollX, oldScrollY ->
+                        exposureContentAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<ModificationFlowContentAdapter.ItemViewHolder> =
+                            exposureContentAdapter.viewHolderCacheList
+                        if (null != viewHolderCacheList) {
+                            val size = viewHolderCacheList.size
+                            for (i in 0 until size) {
+                                viewHolderCacheList[i].exposure_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.convertCoefficientTitleDataList.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
+//                bindTaskStatus(viewModule.status)
+                swipeToLoadLayout {
+                    swipeToLayout = this
+                    setEnableRefresh(true)
+                    setEnableLoadMore(false)
+                    setOnRefreshListener {
+                        /**
+                         * 下拉刷新
+                         */
+                        viewModel.queryConvertCoefficientDataList(deliverygoodsid = deliveryGoodsDetailData.deliverygoodsid ?: "",wrstandardid = data.wrstandardid ?: "")
+                    }
+                    setEnableScrollContentWhenLoaded(false)
+                    setEnableLoadMoreWhenContentNotFull(false)
+
+                    recyclerView {
+                        background = resources.getDrawable(R.color.white)
+                        adapter = exposureContentAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<ModificationFlowContentAdapter.ItemViewHolder> =
+                                    exposureContentAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].exposure_horItemScrollview.scrollTo(
+                                            exposureContentAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+                }
+            }, emptyBlock = {
+                emptyView(hint = resources.getString(R.string.now_no_data))
+            }).lparams(matchParent, matchParent)
+
+
+            //出库待审核
+            viewModel.convertCoefficientContentDataList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
+                    statusLayout.showEmpty()
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
+                        swipeToLayout.finishRefresh()
+                    }
+                    statusLayout.showSuccess()
+                    exposureContentAdapter.setDatas(it)
+                }
+            }
+        }
+    }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
+
+}
+
+/**
+ * 成本权重ui
+ * @property activity AppCompatActivity
+ * @property viewModel CommodityModificationFlowViewModel
+ * @constructor
+ */
+class CostWeightUI(private val activity : AppCompatActivity,private val viewModel: CommodityModificationFlowViewModel,private val data :  XhWrstandard,private val deliveryGoodsDetailData : DeliveryGoodsDetailData) : ModificationFlowContentAdapter.OnContentScrollListener{
+
+
+    private lateinit var swipeToLayout: SwipeToLoadLayout
+    private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
+
+    val topAdapter by lazy {
+        TopTabAdpater(activity)
+    }
+
+    val exposureContentAdapter by lazy {
+        ModificationFlowContentAdapter(activity)
+    }
+
+
+    val root = _FrameLayout(activity).apply {
+        verticalLayout {
+            viewModel.queryCostWeightTitle(deliverygoodsid = deliveryGoodsDetailData.deliverygoodsid ?: "",wrstandardid = data.wrstandardid ?: "")
+            exposureContentAdapter.setOnContentScrollListener(this@CostWeightUI)
+            linearLayout {
+                linearLayout {
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//头部右侧数据
+                        viewModel.costWeightTitleDataList.bindOptional(context) {
+                            text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: ""
+                        }
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 24
+                    }.lparams(wrapContent, wrapContent) {
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(250), autoSize(100))
+
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    /**
+                     * 用来同步内容列表的item左右滑动
+                     */
+                    setOnCustomScrollChangeListener { listener, scrollX, scrollY, oldScrollX, oldScrollY ->
+                        exposureContentAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<ModificationFlowContentAdapter.ItemViewHolder> =
+                            exposureContentAdapter.viewHolderCacheList
+                        if (null != viewHolderCacheList) {
+                            val size = viewHolderCacheList.size
+                            for (i in 0 until size) {
+                                viewHolderCacheList[i].exposure_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.costWeightTitleDataList.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
+//                bindTaskStatus(viewModule.status)
+                swipeToLoadLayout {
+                    swipeToLayout = this
+                    setEnableRefresh(true)
+                    setEnableLoadMore(false)
+                    setOnRefreshListener {
+                        /**
+                         * 下拉刷新
+                         */
+                        viewModel.queryCostWeightDataList(deliverygoodsid = deliveryGoodsDetailData.deliverygoodsid ?: "",wrstandardid = data.wrstandardid ?: "")
+                    }
+                    setEnableScrollContentWhenLoaded(false)
+                    setEnableLoadMoreWhenContentNotFull(false)
+
+                    recyclerView {
+                        background = resources.getDrawable(R.color.white)
+                        adapter = exposureContentAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<ModificationFlowContentAdapter.ItemViewHolder> =
+                                    exposureContentAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].exposure_horItemScrollview.scrollTo(
+                                            exposureContentAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+                    }
+                }
+            }, emptyBlock = {
+                emptyView(hint = resources.getString(R.string.now_no_data))
+            }).lparams(matchParent, matchParent)
+
+
+            //出库待审核
+            viewModel.costWeightContentDataList.bindOptional(context) {
+                if (it?.isEmpty() == true || it?.size == 0) {
+                    statusLayout.showEmpty()
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
+                        swipeToLayout.finishRefresh()
+                    }
+                    statusLayout.showSuccess()
+                    exposureContentAdapter.setDatas(it)
+                }
+            }
+        }
+    }
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
+
+
+}

+ 204 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/flow/CommodityModificationFlowViewModel.kt

@@ -1,12 +1,216 @@
 package cn.muchinfo.rma.view.base.home.commodity.flow
 
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.*
+import cn.muchinfo.rma.global.data.ColumnsData
+import cn.muchinfo.rma.global.data.ParamChangeAppData
+import cn.muchinfo.rma.view.MyApplication
+import cn.muchinfo.rma.view.autoWidget.toArrayList
 import cn.muchinfo.rma.view.base.BaseViewModel
+import cn.muchinfo.rma.view.base.app.Constant
+import com.blankj.utilcode.util.TimeUtils
 
 /**
  * 商品修改流水viewmodel
  */
 class CommodityModificationFlowViewModel : BaseViewModel(){
 
+    /**
+     * 增值税税率头部信息
+     */
+    val rateTitleDataList : MutableLiveData<List<ColumnsData>> = MutableLiveData()
 
+    /**
+     * 增值税税率的内容信息
+     */
+    val rateContentDataList : MutableLiveData<List<ParamChangeAppData>> = MutableLiveData()
 
+    /**
+     * 折算系数头部数据
+     */
+    val convertCoefficientTitleDataList : MutableLiveData<List<ColumnsData>> = MutableLiveData()
+
+    /**
+     * 折算系数内容数据
+     */
+    val convertCoefficientContentDataList : MutableLiveData<List<ParamChangeAppData>> = MutableLiveData()
+
+    /**
+     * 成本权重头部数据
+     */
+    val costWeightTitleDataList : MutableLiveData<List<ColumnsData>> = MutableLiveData()
+
+    /**
+     * 成本权重内容数据
+     */
+    val costWeightContentDataList : MutableLiveData<List<ParamChangeAppData>> = MutableLiveData()
+
+    /**
+     * 查询成本权重头部信息
+     * @param tableKey String
+     */
+    fun queryCostWeightTitle(deliverygoodsid : String = "",wrstandardid : String = "") {
+        val params = mutableMapOf<String, String>().apply {
+            put("tableKey", Constant.table_mobile_delivery_log_taxrate)
+            put("tableType", "3")
+
+        }
+        MyApplication.getInstance()?.commonManager?.queryTableDefine(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                val newlist = respData?.get(0)?.columns?.toArrayList()
+                newlist?.sortWith(Comparator { t1, t2 ->
+                    t1.orderindex?.toInt()?.minus(t2.orderindex?.toInt() ?: 0) ?: 0
+                })
+                costWeightTitleDataList.postValue(newlist)
+                queryCostWeightDataList(deliverygoodsid = deliverygoodsid,wrstandardid = wrstandardid)
+            }
+        }
+    }
+
+    /**
+     * 查询成本权重数据
+     */
+    fun queryCostWeightDataList(deliverygoodsid : String = "",wrstandardid : String = ""){
+        val params = mutableMapOf<String,String>().apply {
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
+            put("paramchangetype","1")
+            put("ftstatus","2")
+            put("deliverygoodsid",deliverygoodsid)
+            put("wrstandardid",wrstandardid)
+        }
+
+        MyApplication.getInstance()?.spotManager?.queryParamChangeApp(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                respData?.toArrayList()?.sortWith(Comparator { t1, t2 ->
+                    (TimeUtils.string2Millis(t2.applytime) - TimeUtils.string2Millis(t1.applytime)).toInt()
+                })
+                costWeightContentDataList.postValue(resetRateDataList(respData ?: arrayListOf()))
+            }
+        }
+    }
+
+    /**
+     * 查询折算系数头部信息
+     * @param tableKey String
+     */
+    fun queryConvertCoefficientTitle(deliverygoodsid : String = "",wrstandardid : String = "") {
+        val params = mutableMapOf<String, String>().apply {
+            put("tableKey", Constant.table_mobile_delivery_log_taxrate)
+            put("tableType", "3")
+        }
+        MyApplication.getInstance()?.commonManager?.queryTableDefine(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                val newlist = respData?.get(0)?.columns?.toArrayList()
+                newlist?.sortWith(Comparator { t1, t2 ->
+                    t1.orderindex?.toInt()?.minus(t2.orderindex?.toInt() ?: 0) ?: 0
+                })
+                convertCoefficientTitleDataList.postValue(newlist)
+                queryConvertCoefficientDataList(deliverygoodsid = deliverygoodsid,wrstandardid = wrstandardid)
+            }
+        }
+    }
+
+    /**
+     * 查询折算系数数据
+     */
+    fun queryConvertCoefficientDataList(deliverygoodsid : String = "",wrstandardid : String = ""){
+        val params = mutableMapOf<String,String>().apply {
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
+            put("paramchangetype","1")
+            put("ftstatus","2")
+            put("deliverygoodsid",deliverygoodsid)
+            put("wrstandardid",wrstandardid)
+        }
+
+        MyApplication.getInstance()?.spotManager?.queryParamChangeApp(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                respData?.toArrayList()?.sortWith(Comparator { t1, t2 ->
+                    (TimeUtils.string2Millis(t2.applytime) - TimeUtils.string2Millis(t1.applytime)).toInt()
+                })
+                convertCoefficientContentDataList.postValue(resetRateDataList(respData ?: arrayListOf()))
+            }
+        }
+    }
+
+//    /**
+//     * 折算系数数据组装
+//     */
+//    fun resetConvertCoefficientDataList(list : List<ParamChangeAppData>) : List<ParamChangeAppData>{
+//        val newList = arrayListOf<ParamChangeAppData>()
+//        list.forEach {
+//            val newRightData = arrayListOf<String>()
+//            newRightData.add(it.applytime ?: "--" + "\n" + it.audittime)//'申请时间/\n审核时间
+//            newRightData.add(it.beforevalue + "\n" + it.aftervalue)//修改前值%/\n修改后值%
+//            newRightData.add(it.applyname +"\n" +it.auditname)//申请人/\n审核人
+//            newRightData.add(it.applystatus?.applyFlowstatus() ?: "--")//状态
+//            newRightData.add(it.auditremark ?: "--")//审核备注
+//            val newData = it.copy(rightData = newRightData)
+//            newList.add(newData)
+//        }
+//        return newList
+//
+//    }
+
+
+    /**
+     * 查询增值税税率头部信息
+     * @param tableKey String
+     */
+    fun queryRateTitle(deliverygoodsid : String = "",wrstandardid : String = "") {
+        val params = mutableMapOf<String, String>().apply {
+            put("tableKey", Constant.table_mobile_delivery_log_taxrate)
+            put("tableType", "3")
+        }
+        MyApplication.getInstance()?.commonManager?.queryTableDefine(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                val newlist = respData?.get(0)?.columns?.toArrayList()
+                newlist?.sortWith(Comparator { t1, t2 ->
+                    t1.orderindex?.toInt()?.minus(t2.orderindex?.toInt() ?: 0) ?: 0
+                })
+                rateTitleDataList.postValue(newlist)
+                queryRateDataList(deliverygoodsid = deliverygoodsid,wrstandardid = wrstandardid)
+            }
+        }
+    }
+
+    /**
+     * 查询增值税税率数据
+     */
+    fun queryRateDataList(deliverygoodsid : String = "",wrstandardid : String = ""){
+        val params = mutableMapOf<String,String>().apply {
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
+            put("paramchangetype","1")
+            put("ftstatus","2")
+            put("deliverygoodsid",deliverygoodsid)
+            put("wrstandardid",wrstandardid)
+        }
+
+        MyApplication.getInstance()?.spotManager?.queryParamChangeApp(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                respData?.toArrayList()?.sortWith(Comparator { t1, t2 ->
+                    (TimeUtils.string2Millis(t2.applytime) - TimeUtils.string2Millis(t1.applytime)).toInt()
+                })
+                rateContentDataList.postValue(resetRateDataList(respData ?: arrayListOf()))
+            }
+        }
+    }
+
+    /**
+     * 增值税税率数据组装
+     */
+    fun resetRateDataList(list : List<ParamChangeAppData>) : List<ParamChangeAppData>{
+        val newList = arrayListOf<ParamChangeAppData>()
+        list.forEach {
+            val newRightData = arrayListOf<String>()
+            newRightData.add(it.applytime ?: "--" + "\n" + it.audittime)//'申请时间/\n审核时间
+            newRightData.add(it.beforevalue + "\n" + it.aftervalue)//修改前值%/\n修改后值%
+            newRightData.add(it.applyname +"\n" +it.auditname)//申请人/\n审核人
+            newRightData.add(it.applystatus?.applyFlowstatus() ?: "--")//状态
+            newRightData.add(it.auditremark ?: "--")//审核备注
+            val newData = it.copy(rightData = newRightData)
+            newList.add(newData)
+        }
+        return newList
+
+    }
 }

+ 190 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/flow/ModificationFlowContentAdapter.java

@@ -0,0 +1,190 @@
+package cn.muchinfo.rma.view.base.home.commodity.flow;
+
+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.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.ViewEnumUtils;
+import cn.muchinfo.rma.global.data.AreaStockApplyData;
+import cn.muchinfo.rma.global.data.ParamChangeAppData;
+import cn.muchinfo.rma.view.autoWidget.CustomHorizontalScrollView;
+import cn.muchinfo.rma.view.base.home.inventory.inventoryaudit.BuySellInventoryActivity;
+import cn.muchinfo.rma.view.base.home.inventory.inventoryaudit.ProductionInventoryActivity;
+import cn.muchinfo.rma.view.base.procurement.RightScrollAdapter;
+
+/**
+ * 用于库存审核的列表adapter
+ */
+public class ModificationFlowContentAdapter extends RecyclerView.Adapter<ModificationFlowContentAdapter.ItemViewHolder> {
+
+    private Context context;
+    private List<ParamChangeAppData> 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 ModificationFlowContentAdapter(Context context) {
+        this.context = context;
+    }
+
+    public void setDatas(List<ParamChangeAppData> datas) {
+        this.datas = datas;
+        notifyDataSetChanged();
+    }
+
+    private void setOnItemClick(int position){
+        List<ParamChangeAppData> newDataList = new ArrayList<>();
+        for (int i = 0;i < datas.size();i++){
+            if (position == i){
+                ParamChangeAppData data1 = datas.get(i);
+                if (data1.isClick() == 0){
+                    data1.setClick(1);
+                }else {
+                    data1.setClick(0);
+                }
+                newDataList.add(data1);
+            }else {
+                ParamChangeAppData newData = datas.get(i);
+                newData.setClick(0);
+                newDataList.add(newData);
+            }
+        }
+        setDatas(newDataList);
+    }
+
+    @NonNull
+    @Override
+    public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+        View view = LayoutInflater.from(context).inflate(R.layout.layout_item_inventory_content, viewGroup, false);
+        return new ItemViewHolder(view);
+    }
+
+    @SuppressLint("SetTextI18n")
+    @Override
+    public void onBindViewHolder(@NonNull final ItemViewHolder itemViewHolder, int i) {
+        this.index = i;
+        ParamChangeAppData data = datas.get(i);
+        itemViewHolder.exposure_tvLeftTitle.setText(data.getWrstandardname());
+//        itemViewHolder.exposure_tv_left_bottom_title.setText(ViewEnumUtils.INSTANCE.isShowTimeString(datas.get(i).getAudittime(),"MM/dd HH:mm"));
+        //右边滑动部分
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
+        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
+        itemViewHolder.exposure_rvItemRight.setLayoutManager(linearLayoutManager);
+        itemViewHolder.exposure_rvItemRight.setHasFixedSize(true);
+        RightScrollAdapter rightScrollAdapter = new RightScrollAdapter(context);
+        rightScrollAdapter.setDatas(datas.get(i).getRightData());
+        itemViewHolder.exposure_rvItemRight.setAdapter(rightScrollAdapter);
+        //缓存当前holder
+        if (!mViewHolderList.contains(itemViewHolder)) {
+            mViewHolderList.add(itemViewHolder);
+        }
+        if (datas.get(i).isClick() == 1){
+            itemViewHolder.exposure_roots_view.setBackgroundColor(context.getResources().getColor(R.color.rma_list_select_color));
+            itemViewHolder.exposure_allView.setVisibility(View.VISIBLE);
+        }else {
+            itemViewHolder.exposure_roots_view.setBackgroundColor(context.getResources().getColor(R.color.white));
+            itemViewHolder.exposure_allView.setVisibility(View.GONE);
+        }
+
+        itemViewHolder.exposure_roots_view.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                setOnItemClick(i);
+            }
+        });
+
+
+
+        itemViewHolder.exposure_horItemScrollview.setEventListener(event -> {
+            if (null != onContentScrollListener) onContentScrollListener.onScroll(event);
+        });
+        //由于viewHolder的缓存,在1级缓存取出来是2个viewholder,并且不会被重新赋值,所以这里需要处理缓存的viewholder的位移
+        itemViewHolder.exposure_horItemScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+            @Override
+            public void onGlobalLayout() {
+                if (!itemViewHolder.isLayoutFinish()) {
+                    itemViewHolder.exposure_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 exposure_roots_view;//根部布局
+        TextView spot_subsidiary;//撤回
+        TextView futures_subsidiary;//审核
+        TextView place_the_order;//详情
+        LinearLayout exposure_allView;//隐藏的底部操作空间
+        LinearLayout exposure_all_click_View;//item左侧点击控件
+        TextView exposure_tvLeftTitle;//左边
+        TextView exposure_tv_left_bottom_title;//合同编号
+        RecyclerView exposure_rvItemRight;//右方的列表
+        public CustomHorizontalScrollView exposure_horItemScrollview;//右方的滑动控件
+        private boolean isLayoutFinish;//自定义字段,用于标记layout
+
+        public boolean isLayoutFinish() {
+            return isLayoutFinish;
+        }
+
+        public void setLayoutFinish(boolean layoutFinish) {
+            isLayoutFinish = layoutFinish;
+        }
+
+        public ItemViewHolder(@NonNull View itemView) {
+            super(itemView);
+            spot_subsidiary = itemView.findViewById(R.id.spot_subsidiary);
+            futures_subsidiary = itemView.findViewById(R.id.futures_subsidiary);
+            place_the_order = itemView.findViewById(R.id.place_the_order);
+            exposure_tvLeftTitle = itemView.findViewById(R.id.inventory_tv_left_title);
+            exposure_rvItemRight = itemView.findViewById(R.id.exposure_rv_item_right);
+            exposure_horItemScrollview = itemView.findViewById(R.id.exposure_hor_item_scrollview);
+            exposure_allView = itemView.findViewById(R.id.exposure_all_view);
+            exposure_tv_left_bottom_title = itemView.findViewById(R.id.exposure_tv_left_bottom_title);
+            exposure_all_click_View = itemView.findViewById(R.id.exposure_all_click_View);
+            exposure_roots_view = itemView.findViewById(R.id.exposure_roots_view);
+        }
+    }
+}

+ 14 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeGoodsActivity.kt

@@ -5,10 +5,14 @@ import android.view.Gravity
 import android.view.inputmethod.EditorInfo
 import android.widget.EditText
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.DeliveryGoodsDetailData
+import cn.muchinfo.rma.global.data.XhWrstandard
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.contract.verticalEmptyView
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 
 /**
@@ -17,12 +21,17 @@ import org.jetbrains.anko.*
  */
 class ChangeGoodsActivity : BaseActivity<ModifyViewModel>(){
 
+    val data by lazy { intent.getParcelableExtra<XhWrstandard>("data") as XhWrstandard }
+
+    val deliveryGoodsDetailData by lazy { intent.getParcelableExtra<DeliveryGoodsDetailData>("deliveryGoodsDetailData") as DeliveryGoodsDetailData }
+
     //输入的商品名称
     lateinit var goods_name : EditText
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            createLoadingDialog(hintStr = "请求中...").bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.segtabment_bg_color)
             topBar {
                 commonLeftButton()
@@ -44,7 +53,7 @@ class ChangeGoodsActivity : BaseActivity<ModifyViewModel>(){
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "铜"
+                    text = deliveryGoodsDetailData.deliverygoodsname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)
@@ -64,7 +73,7 @@ class ChangeGoodsActivity : BaseActivity<ModifyViewModel>(){
                     marginStart = autoSize(37)
                 }
                 textView {
-                    text = "品名称"
+                    text = "品名称"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent) {
@@ -72,8 +81,9 @@ class ChangeGoodsActivity : BaseActivity<ModifyViewModel>(){
                 }
 
                 editText {
+                    setText(data.wrstandardname)
                     goods_name = this
-                    hint = "请输入品名称"
+                    hint = "请输入品名称"
                     background = null
                     inputType = EditorInfo.TYPE_CLASS_TEXT
 //                    setDecimalInputType()
@@ -100,7 +110,7 @@ class ChangeGoodsActivity : BaseActivity<ModifyViewModel>(){
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "吨"
+                    text = data.enumdicname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)

+ 36 - 14
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeGoodsParameterActivity.kt

@@ -7,6 +7,8 @@ import android.widget.EditText
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.MTPEnums
+import cn.muchinfo.rma.global.data.XhMiddlergoods
+import cn.muchinfo.rma.global.data.XhWrstandard
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
@@ -23,6 +25,10 @@ import org.jetbrains.anko.*
 @Suppress("DEPRECATION")
 class ChangeGoodsParameterActivity : BaseActivity<ModifyViewModel>(){
 
+    val data by lazy { intent.getParcelableExtra<XhMiddlergoods>("data") as XhMiddlergoods }
+
+    val xhWrstandard by lazy { intent.getParcelableExtra<XhWrstandard>("xhWrstandard") as XhWrstandard }
+
     val parameterType : MutableLiveData<SelectData> = MutableLiveData()
 
     //输入的设置值
@@ -31,6 +37,10 @@ class ChangeGoodsParameterActivity : BaseActivity<ModifyViewModel>(){
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            parameterType.postValue(SelectData(
+                id = "2",
+                value = "折算系数"
+            ))
             background = resources.getDrawable(R.color.segtabment_bg_color)
             topBar {
                 commonLeftButton()
@@ -48,11 +58,13 @@ class ChangeGoodsParameterActivity : BaseActivity<ModifyViewModel>(){
                         text = "商品名称"
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent)
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(36)
+                    }
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "铜"
+                    text = xhWrstandard.wrstandardname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)
@@ -69,11 +81,13 @@ class ChangeGoodsParameterActivity : BaseActivity<ModifyViewModel>(){
                         text = "套保品种"
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent)
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(36)
+                    }
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "铜"
+                    text = data.middlegoodsname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)
@@ -90,11 +104,13 @@ class ChangeGoodsParameterActivity : BaseActivity<ModifyViewModel>(){
                         text = "单位"
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent)
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(36)
+                    }
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "吨"
+                    text = data.enumdicname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)
@@ -106,16 +122,18 @@ class ChangeGoodsParameterActivity : BaseActivity<ModifyViewModel>(){
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 onThrottleFirstClick {
-                    val selectDataList = arrayListOf(
-                        SelectData(
-                            id = "2",
-                            value = "折算系数"
-                        ),
-                        SelectData(
+                    val selectDataList = arrayListOf<SelectData>()
+                    selectDataList.add(SelectData(
+                        id = "2",
+                        value = "折算系数"
+                    ))
+                    if (xhWrstandard.mglst?.size ?: 0 > 1){
+                        selectDataList.add(SelectData(
                             id = "3",
                             value = "成本权重"
-                        )
-                    )
+                        ))
+                    }
+
                     creatBottomSheetDialog("请选择合同类型", selectDataList) {
                         parameterType.postValue(this)
                     }
@@ -199,7 +217,11 @@ class ChangeGoodsParameterActivity : BaseActivity<ModifyViewModel>(){
 
                 textView {
                     onThrottleFirstClick {
+                        if (parameterType.value?.id == "2"){//折算系数
+
+                        }else{//成本权重
 
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg

+ 8 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeHedgeRatioActivity.kt

@@ -5,6 +5,8 @@ import android.view.Gravity
 import android.view.inputmethod.EditorInfo
 import android.widget.EditText
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.XhMiddlergoods
+import cn.muchinfo.rma.global.data.XhWrstandard
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.future.trade.itemView
@@ -18,6 +20,10 @@ import org.jetbrains.anko.*
  */
 class ChangeHedgeRatioActivity : BaseActivity<ModifyViewModel>(){
 
+    val data by lazy { intent.getParcelableExtra<XhMiddlergoods>("data") as XhMiddlergoods }
+
+    val xhWrstandard by lazy { intent.getParcelableExtra<XhWrstandard>("xhWrstandard") as XhWrstandard }
+
     //输入的修改后套保比例
     lateinit var hedge_ratio : EditText
 
@@ -48,7 +54,7 @@ class ChangeHedgeRatioActivity : BaseActivity<ModifyViewModel>(){
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "默认选中的套保品种名称"
+                    text = data.middlegoodsname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)
@@ -69,7 +75,7 @@ class ChangeHedgeRatioActivity : BaseActivity<ModifyViewModel>(){
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "默认选中的套保品种单位"
+                    text = data.enumdicname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)

+ 36 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeRateActivity.kt

@@ -5,10 +5,15 @@ import android.view.Gravity
 import android.view.inputmethod.EditorInfo
 import android.widget.EditText
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.DeliveryGoodsDetailData
+import cn.muchinfo.rma.global.data.XhWrstandard
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.contract.verticalEmptyView
+import com.blankj.utilcode.util.ToastUtils
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 
 /**
@@ -16,12 +21,17 @@ import org.jetbrains.anko.*
  */
 class ChangeRateActivity : BaseActivity<ModifyViewModel>(){
 
+    val data by lazy { intent.getParcelableExtra<XhWrstandard>("data") as XhWrstandard }
+
+    val deliveryGoodsDetailData by lazy { intent.getParcelableExtra<DeliveryGoodsDetailData>("deliveryGoodsDetailData") as DeliveryGoodsDetailData }
+
     //输入增值税税率
     lateinit var rate_input_edittext : EditText
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            createLoadingDialog(hintStr = "请求中...").bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.segtabment_bg_color)
             topBar {
                 commonLeftButton()
@@ -39,11 +49,13 @@ class ChangeRateActivity : BaseActivity<ModifyViewModel>(){
                         text = "商品名称"
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent)
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(36)
+                    }
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "铜"
+                    text = data.wrstandardname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)
@@ -60,11 +72,13 @@ class ChangeRateActivity : BaseActivity<ModifyViewModel>(){
                         text = "单位"
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
-                    }.lparams(wrapContent, wrapContent)
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(36)
+                    }
                 }.lparams(autoSize(250), autoSize(132))
 
                 textView {
-                    text = "吨"
+                    text = data.enumdicname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)
@@ -92,11 +106,12 @@ class ChangeRateActivity : BaseActivity<ModifyViewModel>(){
                 }
 
                 editText {
+                    setText(data.vatrate)
                     rate_input_edittext = this
-                    hint = "请输入品牌名称"
+                    hint = "请输入增值税税率"
                     background = null
                     inputType = EditorInfo.TYPE_CLASS_TEXT
-//                    setDecimalInputType()
+                    setDecimalInputType()
                     hintColorStr = "#CCCCCC"
                     textSizeAuto = 31
                     textColorStr = "#333333"
@@ -113,7 +128,21 @@ class ChangeRateActivity : BaseActivity<ModifyViewModel>(){
 
                 textView {
                     onThrottleFirstClick {
-
+                        if (rate_input_edittext.text.toString().isNullOrEmpty()){
+                            ToastUtils.showLong("请输入增值税税率")
+                            return@onThrottleFirstClick
+                        }
+                        viewModel.ermcpParamchangeappReq(
+                            areauserid = deliveryGoodsDetailData?.areauserid?.toLong() ?: 0,
+                            wrstandardid = data.wrstandardid?.toLong() ?: 0,
+                            paramchangetype = 1,
+                            operatetype = 2,
+                            beforevalue = data.vatrate?.toDouble() ?: 0.0,
+                            aftervalue = rate_input_edittext.text.toString().toDouble(),
+                            applystatus = 1
+                        ){
+                            finish()
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg

+ 22 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ChangeSpotVarietyActivity.kt

@@ -5,10 +5,12 @@ import android.view.Gravity
 import android.view.inputmethod.EditorInfo
 import android.widget.EditText
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.DeliveryGoodsDetailData
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.contract.verticalEmptyView
+import com.blankj.utilcode.util.ToastUtils
 import org.jetbrains.anko.*
 
 /**
@@ -18,6 +20,13 @@ import org.jetbrains.anko.*
  */
 class ChangeSpotVarietyActivity : BaseActivity<ModifyViewModel>(){
 
+    /**
+     * 用作修改,停用,恢复时的数据
+     */
+    val data: DeliveryGoodsDetailData by lazy {
+        intent.getParcelableExtra<DeliveryGoodsDetailData>("data") as DeliveryGoodsDetailData
+    }
+
     //输入的品种
     lateinit var spot_varietty : EditText
 
@@ -56,6 +65,7 @@ class ChangeSpotVarietyActivity : BaseActivity<ModifyViewModel>(){
                 }.lparams(autoSize(250), autoSize(132))
 
                 editText {
+                    setText(data.deliverygoodsname)
                     spot_varietty = this
                     hint = "请输入品种名称"
                     background = null
@@ -106,7 +116,18 @@ class ChangeSpotVarietyActivity : BaseActivity<ModifyViewModel>(){
 
                 textView {
                     onThrottleFirstClick {
-
+                        if (spot_varietty.text.toString().isNullOrEmpty()){
+                            ToastUtils.showLong("请输入品种名称")
+                            return@onThrottleFirstClick
+                        }
+                        viewModel.deliveryGoodsOperateCommonReq(
+                            version = "3.2",
+                            deliverygoodsname = spot_varietty.text.toString(),
+                            deliverygoodsid = data.deliverygoodsid?.toLong() ?: 0,
+                            type = 2
+                        ){
+                            finish()
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg

+ 131 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/modify/ModifyViewModel.kt

@@ -84,4 +84,135 @@ class ModifyViewModel : BaseViewModel(){
         }
     }
 
+
+    /**
+     * 修改商品操作请求
+     */
+    fun deliveryGoodsOperateCommonReq(
+        version : String = "",//接口版本号(目前支持2.0 3.1 3.2)
+        deliverygoodscode : String = "",//交割商品代码
+        deliverygoodsname : String = "",//交割商品名称
+        deliverygoodsid : Long = 0,//交割商品id(修改时有值)
+        unitid : Long = 0,//单位ID
+        type : Int = 0,//int32 类型 1 新增 2 修改 3 停用  4 恢复
+        remark : String = "",//备注
+        gldwrstandards : List<ManageServiceMI3.GLDWRStandardCloudEx> = arrayListOf(),//GLDWRStandardCloudEx 现货商品型号数据
+        glddgfactoryItems : List<ManageServiceMI3.GLDDGFactoryItemEx> = arrayListOf(),//GLDDGFactoryItemEx 现货商品品牌数据
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.commodityManager?.deliveryGoodsOperateCommonReq(
+                version = version,
+                deliverygoodscode = deliverygoodscode,
+                deliverygoodsname = deliverygoodsname,
+                deliverygoodsid = deliverygoodsid,
+                unitid = unitid,
+                type = type,
+                remark = remark,
+                gldwrstandards = gldwrstandards,
+                glddgfactoryItems = glddgfactoryItems
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+    /**
+     * 参数变更申请表操作请求
+     */
+    fun ermcpParamchangeappReq(
+        applicationid : Long = 0,//申请ID(审核通过,审核拒绝,已撤回时有值)
+        areauserid : Long = 0,//所属机构用户ID
+        middlegoodsid : Long = 0,//套保品种ID [ParamChangeType = 2,3,4]
+        wrstandardid : Long = 0,//现货商品ID [ParamChangeType = 1,2,3]
+        paramchangetype : Int = 0,//参数变更类型 - 1:增值税率变更(现货商品) 2:折算系数变更(现货商品) 3:成本权重(现货商品) 4:套保比率变更(套保品种)
+        operatetype : Int = 0,//操作类型 - 1:新增 2:修改
+        beforevalue : Double = 0.0,//变更前
+        aftervalue : Double = 0.0,//变更后
+        remark : String = "",//备注
+        applystatus : Int = 0,//申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.commodityManager?.ermcpParamchangeappReq(
+                applicationid = applicationid,
+                areauserid = areauserid,
+                middlegoodsid = middlegoodsid,
+                wrstandardid = wrstandardid,
+                paramchangetype = paramchangetype,
+                operatetype = operatetype,
+                beforevalue = beforevalue,
+                aftervalue = aftervalue,
+                remark = remark,
+                applystatus = applystatus
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+    /**
+     * 现货商品操作请求
+     * @param version String
+     * @param deliverygoodsid String
+     * @param type String
+     * @param gldwrstandards GLDWRStandardCloudEx
+     * @param isSuccess Function1<[@kotlin.ParameterName] Boolean, Unit>
+     */
+    fun wRStandardOperateCommonReq(
+        version : String = "",//接口版本号(目前支持2.0 3.1 3.2)
+        deliverygoodsid : String = "",//交割商品id
+        type : String = "",//类型 1 新增 2 修改
+        gldwrstandards : ManageServiceMI3.GLDWRStandardCloudEx, //GLDWRStandardCloudEx 现货商品型号数据
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.commodityManager?.wRStandardOperateCommonReq(
+                version = version,
+                deliverygoodsid = deliverygoodsid,
+                type = type,
+                gldwrstandards = gldwrstandards
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+
 }

+ 19 - 15
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/newcommodity/DemoViewHolder.kt

@@ -15,6 +15,8 @@ import cn.muchinfo.rma.view.base.home.commodity.AddHedgeGoodsActivity
 import cn.muchinfo.rma.view.base.home.commodity.AddSpotGoodsActivity
 import cn.muchinfo.rma.view.base.home.commodity.CommodityMiddleViewHolder
 import cn.muchinfo.rma.view.base.home.commodity.modify.AddBrandActivity
+import cn.muchinfo.rma.view.base.home.commodity.modify.AddGoodsActivity
+import cn.muchinfo.rma.view.base.home.commodity.modify.ChangeSpotVarietyActivity
 import cn.muchinfo.rma.view.base.home.commodity.newspot.NewAddSpotGoodsActivity
 import cn.muchinfo.rma.view.base.home.contract.emptyView
 import com.blankj.utilcode.util.ActivityUtils
@@ -32,9 +34,9 @@ class DemoViewHolder(
 
     lateinit var brand_RecyclerView: RecyclerView
 
-    //品类adapter(商品--第一版就是叫商品,后来改为品类,现在又改回商品,,,,,甚是无语)
-    private val spotCategoryAdapter: BaseAdapter<XhWrstandard, SpotCategoryViewHolder> =
-        BaseAdapter { _, _ -> SpotCategoryViewHolder(activity, viewModel,dataIndex) }
+//    //品类adapter(商品--第一版就是叫商品,后来改为品类,现在又改回商品,,,,,甚是无语)
+//    private val spotCategoryAdapter: BaseAdapter<XhWrstandard, SpotCategoryViewHolder> =
+//        BaseAdapter { _, _ -> SpotCategoryViewHolder(activity, viewModel,dataIndex) }
 
     //品牌adapter
 //    private val brandAdapter: BaseAdapter<Xhnrand, BrandViewHolder> =
@@ -97,9 +99,8 @@ class DemoViewHolder(
                 textView {
                     onThrottleFirstClick {
                         val intent = Intent()
-                        intent.putExtra("type","2")
                         intent.putExtra("data",data.value)
-                        intent.setClass(context, NewAddSpotGoodsActivity::class.java)
+                        intent.setClass(context, ChangeSpotVarietyActivity::class.java)
                         ActivityUtils.startActivity(intent)
                     }
                     data.bindOptional(context){
@@ -184,9 +185,11 @@ class DemoViewHolder(
 
 
                 textView {
-                    visibility = View.GONE
-                    onThrottleFirstClick {
 
+                    onThrottleFirstClick {
+                        val intent = Intent()
+                        intent.setClass(context,AddGoodsActivity::class.java)
+                        ActivityUtils.startActivity(intent)
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
@@ -198,7 +201,7 @@ class DemoViewHolder(
                 }
 
                 textView {
-                    visibility = View.GONE
+
                     onThrottleFirstClick {
                         val intent = Intent()
                         intent.putExtra("type","1")
@@ -288,10 +291,7 @@ class DemoViewHolder(
                     background = resources.getDrawable(R.color.white)
 
                 }.lparams(matchParent, wrapContent)
-//
-//                data.bindOptional(context) {
 
-//                }
 
                 linearLayout {
                     gravity = Gravity.CENTER_VERTICAL
@@ -351,14 +351,18 @@ class DemoViewHolder(
                         } else {
                             visibility = View.VISIBLE
                         }
+                        val spotCategoryAdapter: BaseAdapter<XhWrstandard, SpotCategoryViewHolder> =
+                            BaseAdapter { _, _ -> SpotCategoryViewHolder(activity, viewModel,dataIndex,data.value ?: DeliveryGoodsDetailData()) }
+                        adapter = spotCategoryAdapter
+                        spotCategoryAdapter.setNewData(it?.wdlst)
                     }
                     background = resources.getDrawable(R.color.white)
-                    adapter = spotCategoryAdapter
+
                 }.lparams(matchParent, wrapContent)
 
-                data.bindOptional(context) {
-                    spotCategoryAdapter.setNewData(it?.wdlst)
-                }
+//                data.bindOptional(context) {
+//                    spotCategoryAdapter.setNewData(it?.wdlst)
+//                }
             }.lparams(matchParent, wrapContent)
 
         }.lparams(matchParent, wrapContent) {

+ 45 - 23
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/newcommodity/NewCommodityInformationActivity.kt

@@ -64,20 +64,28 @@ class NewCommodityInformationActivity : BaseActivity<NewCommodityInformationView
     private val newHedgeSpeciesUI by lazy { NewHedgeSpeciesUI(this, viewModel) }
 
     //viewpager的适配器
-    private var newPagerAdapter : PagerAdapter? = null
+    private var newPagerAdapter: PagerAdapter? = null
 
     //tabSegment标题
-    private val newTabsArray : ArrayList<String> = arrayListOf()
+    private val newTabsArray: ArrayList<String> = arrayListOf()
 
     //暂存的页面组
-    private val uiList : ArrayList<_FrameLayout> = arrayListOf()
-
-    fun initMenuData(){
-        if (GlobalDataCollection.instance?.getSecondLevelMenu(firstCode = "client_deliverygoods",secondCode = "client_deliverygoods_spot") == true){
+    private val uiList: ArrayList<_FrameLayout> = arrayListOf()
+
+    fun initMenuData() {
+        if (GlobalDataCollection.instance?.getSecondLevelMenu(
+                firstCode = "client_deliverygoods",
+                secondCode = "client_deliverygoods_spot"
+            ) == true
+        ) {
             newTabsArray.add("现货品种")
             uiList.add(newSpotVarietiesUI.root)
         }
-        if (GlobalDataCollection.instance?.getSecondLevelMenu(firstCode = "client_deliverygoods",secondCode = "client_deliverygoods_hedge") == true){
+        if (GlobalDataCollection.instance?.getSecondLevelMenu(
+                firstCode = "client_deliverygoods",
+                secondCode = "client_deliverygoods_hedge"
+            ) == true
+        ) {
             newTabsArray.add("套保品种")
             uiList.add(newHedgeSpeciesUI.root)
         }
@@ -117,7 +125,7 @@ class NewCommodityInformationActivity : BaseActivity<NewCommodityInformationView
                     onThrottleFirstClick {
                         finish()
                     }
-                }.lparams(autoSize(48),autoSize(48)){
+                }.lparams(autoSize(48), autoSize(48)) {
                     marginStart = autoSize(36)
                 }
                 emptyView()
@@ -132,9 +140,13 @@ class NewCommodityInformationActivity : BaseActivity<NewCommodityInformationView
                 imageView {
                     selectTab.bindOptional(context) {
                         if (it == 0) {
-                            if (GlobalDataCollection.instance?.getSecondLevelMenu(firstCode = "client_deliverygoods",secondCode = "client_deliverygoods_add") == true){
+                            if (GlobalDataCollection.instance?.getSecondLevelMenu(
+                                    firstCode = "client_deliverygoods",
+                                    secondCode = "client_deliverygoods_add"
+                                ) == true
+                            ) {
                                 visibility = View.VISIBLE
-                            }else{
+                            } else {
                                 visibility = View.INVISIBLE
                             }
                         } else {
@@ -149,7 +161,7 @@ class NewCommodityInformationActivity : BaseActivity<NewCommodityInformationView
                         intent.setClass(context, NewAddSpotGoodsActivity::class.java)
                         ActivityUtils.startActivity(intent)
                     }
-                }.lparams(autoSize(48),autoSize(48)){
+                }.lparams(autoSize(48), autoSize(48)) {
                     marginEnd = autoSize(36)
                 }
             }.lparams(matchParent, autoSize(120))
@@ -212,10 +224,15 @@ class NewCommodityInformationActivity : BaseActivity<NewCommodityInformationView
                         emptyView()
                         imageView {
                             onThrottleFirstClick {
-                                if (selectedTabIndex == 0){
-                                     onThrottleFirstClick {
-                                        showPopups(context = context,textString = "1,品类对应的是标仓系数,是非标商品转换成现货品种的系数;\n现货品种数量=现货品类数量*标仓系数。\n2,套保品种对应的是套保系数,是现货品中转换成套保品种的系数;\n" +
-                                                "套保品种数量=现货品种数量*套保系统\n3,期货品种对应的是期货品种系数,是期货品种转换成套保品种的系数。\n套保品种数量=期货品种数量*期货品种系数。",v = this,weight = 350)
+                                if (selectedTabIndex == 0) {
+                                    onThrottleFirstClick {
+                                        showPopups(
+                                            context = context,
+                                            textString = "1,品类对应的是标仓系数,是非标商品转换成现货品种的系数;\n现货品种数量=现货品类数量*标仓系数。\n2,套保品种对应的是套保系数,是现货品中转换成套保品种的系数;\n" +
+                                                    "套保品种数量=现货品种数量*套保系统\n3,期货品种对应的是期货品种系数,是期货品种转换成套保品种的系数。\n套保品种数量=期货品种数量*期货品种系数。",
+                                            v = this,
+                                            weight = 350
+                                        )
                                     }
                                 }
                             }
@@ -227,7 +244,7 @@ class NewCommodityInformationActivity : BaseActivity<NewCommodityInformationView
                                 }
                             }
 
-                        }.lparams(autoSize(36), autoSize(36)){
+                        }.lparams(autoSize(36), autoSize(36)) {
                             marginEnd = autoSize(80)
                         }
                     }.lparams(autoSize(450), autoSize(80))
@@ -236,11 +253,16 @@ class NewCommodityInformationActivity : BaseActivity<NewCommodityInformationView
                         emptyView()
                         imageView {
                             onThrottleFirstClick {
-                                if (selectedTabIndex == 1){
+                                if (selectedTabIndex == 1) {
                                     onThrottleFirstClick {
-                                        showPopups(context = context,textString = "1,品类对应的是标仓系数,是非标商品转换成现货品种的系数;\n现货品种数量=现货品类数量*标仓系数。\n2,套保品种对应的是套保系数,是现货品中转换成套保品种的系数;\n" +
-                                                "套保品种数量=现货品种数量*套保系统\n3,期货品种对应的是期货品种系数,是期货品种转换成套保品种的系数。\n套保品种数量=期货品种数量*期货品种系数。\n" +
-                                                "4,期货合约对应的是期货合约乘数,是期货合约转换成期货品种的系数;\n期货品种数量=期货合约手数*期货合约乘数。",v = this,weight = 350)
+                                        showPopups(
+                                            context = context,
+                                            textString = "1,品类对应的是标仓系数,是非标商品转换成现货品种的系数;\n现货品种数量=现货品类数量*标仓系数。\n2,套保品种对应的是套保系数,是现货品中转换成套保品种的系数;\n" +
+                                                    "套保品种数量=现货品种数量*套保系统\n3,期货品种对应的是期货品种系数,是期货品种转换成套保品种的系数。\n套保品种数量=期货品种数量*期货品种系数。\n" +
+                                                    "4,期货合约对应的是期货合约乘数,是期货合约转换成期货品种的系数;\n期货品种数量=期货合约手数*期货合约乘数。",
+                                            v = this,
+                                            weight = 350
+                                        )
                                     }
                                 }
                             }
@@ -251,7 +273,7 @@ class NewCommodityInformationActivity : BaseActivity<NewCommodityInformationView
                                     imageResource = R.mipmap.rma_message_normal
                                 }
                             }
-                        }.lparams(autoSize(36), autoSize(36)){
+                        }.lparams(autoSize(36), autoSize(36)) {
                             marginEnd = autoSize(80)
                         }
                     }.lparams(autoSize(450), autoSize(80))
@@ -300,8 +322,8 @@ class NewSpotVarietiesUI(
         viewModel.queryDeliveryGoodsDetailList()
     }
 
-        val root = _FrameLayout(activity).apply {
-            verticalLayout {
+    val root = _FrameLayout(activity).apply {
+        verticalLayout {
             statusLayout(contentBlock = {
                 statusLayout = this
 //                bindTaskStatus(viewModule.status)

+ 48 - 11
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/newcommodity/SpotCategoryViewHolder.kt

@@ -1,33 +1,65 @@
 package cn.muchinfo.rma.view.base.home.commodity.newcommodity
 
+import android.content.Intent
+import android.graphics.Color
 import android.view.Gravity
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
 import cn.muchinfo.rma.R
-import cn.muchinfo.rma.global.data.Ermcp3MiddleGoodsDetail
-import cn.muchinfo.rma.global.data.Ermcp3Wrstandard
-import cn.muchinfo.rma.global.data.XhMiddlergoods
-import cn.muchinfo.rma.global.data.XhWrstandard
+import cn.muchinfo.rma.global.data.*
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
+import cn.muchinfo.rma.view.base.home.commodity.flow.CommodityModificationFlowActivity
+import cn.muchinfo.rma.view.base.home.commodity.modify.AddBrandActivity
+import cn.muchinfo.rma.view.base.home.commodity.modify.ChangeGoodsActivity
+import cn.muchinfo.rma.view.base.home.commodity.modify.ChangeRateActivity
 import cn.muchinfo.rma.view.base.home.contract.emptyView
+import com.blankj.utilcode.util.ActivityUtils
+import com.blankj.utilcode.util.ToastUtils
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
 import org.jetbrains.anko.*
 
 //第N版的商品viewholder
-class SpotCategoryViewHolder(private val activity : AppCompatActivity,private val viewModel: NewCommodityInformationViewModel,private val index : Int) : BaseViewHolder<XhWrstandard>(activity){
+class SpotCategoryViewHolder(private val activity : AppCompatActivity,private val viewModel: NewCommodityInformationViewModel,private val index : Int,private val deliveryGoodsDetailData : DeliveryGoodsDetailData) : BaseViewHolder<XhWrstandard>(activity){
     override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
 
     //套保品种adapter
-    private val hedgeAdapter: BaseAdapter<XhMiddlergoods, SpotHedgeViewHolder> =
-        BaseAdapter { _, _ -> SpotHedgeViewHolder(activity, viewModel, dataIndex) }
+//    private val hedgeAdapter: BaseAdapter<XhMiddlergoods, SpotHedgeViewHolder> =
+//        BaseAdapter { _, _ -> SpotHedgeViewHolder(activity, viewModel, dataIndex) }
 
     override fun _FrameLayout.createContentView() {
 
         verticalLayout {
             linearLayout {
+                setOnLongClickListener {
+                    ListPopWindow.Builder(attachView = this,backgroundColor = Color.parseColor("#ffffff"),textColor = "#368FDF",isShowMark = false)
+                        .addMenuItem(ListPopWindow.IconParam( title = "修改商品", onItemClickListener = {
+                            val intent = Intent()
+                            intent.putExtra("data",data.value)
+                            intent.putExtra("deliveryGoodsDetailData",deliveryGoodsDetailData)
+                            intent.setClass(context,ChangeGoodsActivity::class.java)
+                            ActivityUtils.startActivity(intent)
+                        }))
+                        .addMenuItem(ListPopWindow.IconParam( title = "修改税率", onItemClickListener = {
+                            val intent = Intent()
+                            intent.putExtra("data",data.value)
+                            intent.putExtra("deliveryGoodsDetailData",deliveryGoodsDetailData)
+                            intent.setClass(context,ChangeRateActivity::class.java)
+                            ActivityUtils.startActivity(intent)
+                        }))
+                        .addMenuItem(ListPopWindow.IconParam( title = "参数记录", onItemClickListener = {
+                            val intent = Intent()
+                            intent.putExtra("data",data.value)
+                            intent.putExtra("deliveryGoodsDetailData",deliveryGoodsDetailData)
+                            intent.setClass(context,CommodityModificationFlowActivity::class.java)
+                            ActivityUtils.startActivity(intent)
+                        }))
+                        .build()
+                        .show()
+                    false
+                }
                 backgroundResource = R.drawable.rma_list_item_bg
                 gravity = Gravity.CENTER_VERTICAL
                 //品类
@@ -129,13 +161,18 @@ class SpotCategoryViewHolder(private val activity : AppCompatActivity,private va
                     } else {
                         visibility = View.VISIBLE
                     }
+                    val hedgeAdapter: BaseAdapter<XhMiddlergoods, SpotHedgeViewHolder> =
+                        BaseAdapter { _, _ -> SpotHedgeViewHolder(activity, viewModel, dataIndex,data.value ?: XhWrstandard()) }
+
+                    adapter = hedgeAdapter
+                    hedgeAdapter.setNewData(it?.mglst)
                 }
                 background = resources.getDrawable(R.color.white)
-                adapter = hedgeAdapter
+
             }.lparams(matchParent, wrapContent)
-            data.bindOptional(context) {
-                hedgeAdapter.setNewData(it?.mglst)
-            }
+//            data.bindOptional(context) {
+//                hedgeAdapter.setNewData(it?.mglst)
+//            }
         }.lparams(matchParent, wrapContent)
 
     }

+ 22 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/newcommodity/SpotHedgeViewHolder.kt

@@ -1,5 +1,7 @@
 package cn.muchinfo.rma.view.base.home.commodity.newcommodity
 
+import android.content.Intent
+import android.graphics.Color
 import android.view.Gravity
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
@@ -7,20 +9,39 @@ import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.data.Ermcp3GoodsGroupEx
 import cn.muchinfo.rma.global.data.Ermcp3MiddleGoodsDetail
 import cn.muchinfo.rma.global.data.XhMiddlergoods
+import cn.muchinfo.rma.global.data.XhWrstandard
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.home.commodity.flow.CommodityModificationFlowActivity
+import cn.muchinfo.rma.view.base.home.commodity.modify.ChangeGoodsActivity
+import cn.muchinfo.rma.view.base.home.commodity.modify.ChangeGoodsParameterActivity
+import cn.muchinfo.rma.view.base.home.commodity.modify.ChangeRateActivity
 import cn.muchinfo.rma.view.base.home.contract.emptyView
+import com.blankj.utilcode.util.ActivityUtils
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
 import org.jetbrains.anko.*
 
-class SpotHedgeViewHolder(private val activity : AppCompatActivity,private val viewModel: NewCommodityInformationViewModel,private val index : Int) : BaseViewHolder<XhMiddlergoods>(activity){
+class SpotHedgeViewHolder(private val activity : AppCompatActivity,private val viewModel: NewCommodityInformationViewModel,private val index : Int,private val xhWrstandard : XhWrstandard) : BaseViewHolder<XhMiddlergoods>(activity){
     override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
 
 
     override fun _FrameLayout.createContentView() {
         verticalLayout {
             linearLayout {
+                setOnLongClickListener {
+                    ListPopWindow.Builder(attachView = this,backgroundColor = Color.parseColor("#ffffff"),textColor = "#368FDF",isShowMark = false)
+                        .addMenuItem(ListPopWindow.IconParam( title = "修改", onItemClickListener = {
+                            val intent = Intent()
+                            intent.putExtra("data",data.value)
+                            intent.putExtra("xhWrstandard",xhWrstandard)
+                            intent.setClass(context, ChangeGoodsParameterActivity::class.java)
+                            ActivityUtils.startActivity(intent)
+                        }))
+                        .build()
+                        .show()
+                    false
+                }
                 backgroundResource = R.drawable.rma_list_item_bg
                 gravity = Gravity.CENTER_VERTICAL
                 //套保品种名称

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/PeriodAssociatedFragment.kt

@@ -359,7 +359,7 @@ class ExternalOrderAssociationUI(
                     }.lparams(wrapContent, wrapContent) {
                         marginStart = autoSize(30)
                     }
-                }.lparams(autoSize(SizeUtils.dp2px(135f)), autoSize(100))
+                }.lparams(autoSize(SizeUtils.dp2px(90f)), autoSize(100))
 
                 inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
                     horScrollview = this
@@ -519,7 +519,7 @@ class PeriodDocumentsUI(
                     }.lparams(wrapContent, wrapContent) {
                         marginStart = autoSize(30)
                     }
-                }.lparams(autoSize(SizeUtils.dp2px(135f)), autoSize(100))
+                }.lparams(autoSize(SizeUtils.dp2px(90f)), autoSize(100))
 
                 inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
                     horScrollview = this
@@ -755,7 +755,7 @@ class RelationalRecordUI(
                     }.lparams(wrapContent, wrapContent) {
                         marginStart = autoSize(30)
                     }
-                }.lparams(autoSize(SizeUtils.dp2px(135f)), autoSize(100))
+                }.lparams(autoSize(SizeUtils.dp2px(90f)), autoSize(100))
 
                 inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
                     horScrollview = this

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/BusinessAssociationsViewHolder.kt

@@ -82,7 +82,7 @@ class BusinessAssociationsViewHolder(private val activity : AppCompatActivity, p
                     gravity = Gravity.BOTTOM
                     textView {
                         data.bindOptional(context){
-                            text = it?.deliverygoodsname
+                            text = it?.deliverygoodsname + "-" + it?.wrstandardname
                         }
                         textSizeAuto = 28
                         textColorInt = R.color.rma_black_33

+ 6 - 6
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleAssociationsViewHolder.kt

@@ -77,7 +77,7 @@ class FillSingleAssociationsViewHolder(private val activity : AppCompatActivity,
                     gravity = Gravity.BOTTOM
                     textView {
                         data.bindOptional(context){
-                            text = it?.wrstandardname
+                            text = it?.deliverygoodsname + "-" + it?.wrstandardname
                         }
                         textSizeAuto = 28
                         textColorInt = R.color.rma_black_33
@@ -128,7 +128,7 @@ class FillSingleAssociationsViewHolder(private val activity : AppCompatActivity,
 //                            val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(data1?.goodsid?.toInt() ?: 0)
 //                            val multiple = goodsInfo.agreeunit.times(deliveryRelationData?.mindeliveryqty?.toDouble() ?: 1.0).times(deliveryRelationData?.rratio2?.toDouble() ?: 1.0)
 //                            setChangeValue(multiple)
-                            text =  NumberUtils.roundNum(it?.middlegoodspricedqty3?.toDouble()?.minus(it.pricedqty?.toDouble() ?: 0.0).toString(),2)
+                            text =  NumberUtils.roundNum(it?.middlegoodspricedqty3?.toDouble()?.minus(it.relatedmiddlegoodsqty?.toDouble() ?: 0.0).toString(),2)
                         }
                         setOnTextChangeListener { view, value ->
                             if (value.isNullOrEmpty().not()) {
@@ -155,10 +155,10 @@ class FillSingleAssociationsViewHolder(private val activity : AppCompatActivity,
                 emptyView()
 
                 textView {
-                    // TODO 缺少现货数量
-                    data.bindOptional(context){
-                        text = it?.contracttype
-                    }
+                     
+//                    data.bindOptional(context){
+//                        text = it?.contracttype
+//                    }
                     textSizeAuto = 27
                     textColorInt = R.color.rma_hint_text_color_ccc
                 }.lparams(wrapContent, wrapContent){

+ 25 - 6
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleConnectionActivity.kt

@@ -1,10 +1,12 @@
 package cn.muchinfo.rma.view.base.spot.associated.perioddocuments
 
+import android.annotation.SuppressLint
 import android.os.Bundle
 import android.view.Gravity
 import android.view.View
 import android.view.inputmethod.EditorInfo
 import android.widget.EditText
+import android.widget.TextView
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
@@ -64,6 +66,9 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
     //输入的现货商品
     lateinit var spot_goods_edittext: EditText
 
+    //现货数量
+    lateinit var spot_number : TextView
+
     private val businessAssociationsAdapter: BaseAdapter<SCMiddleGoodsData, FillSingleAssociationsViewHolder> =
         BaseAdapter { _, _ ->
             FillSingleAssociationsViewHolder(
@@ -77,6 +82,7 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
         selectChannelBuildType.postValue(SelectData(id = "1", value = "建仓"))
     }
 
+    @SuppressLint("SetTextI18n")
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
@@ -129,7 +135,7 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
                                     text = it?.accountid.toString() + "   " + it?.accountname
                                     textColorInt = R.color.rma_black_33
                                 }
-                                text = "请选择业务类型"
+                                text = "请选择账户"
                                 textSizeAuto = 31
                                 textColorInt = R.color.rma_hint_text_color_ccc
                             }.lparams(wrapContent, wrapContent)
@@ -417,7 +423,14 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
                                     decimal = 0
                                     number_edittext = this
                                     setOnTextChangeListener { view, value ->
-
+                                        if (value.isNullOrEmpty().not()){
+                                            if (selectGoods.value?.id.isNullOrEmpty().not()){
+                                                spot_number.text = "现货" + value?.toDouble()?.times(selectGoods.value?.agreeunit?.toDouble() ?: 0.0) + "吨"
+                                            }else{
+                                                spot_number.text = ""
+                                            }
+
+                                        }
                                     }
                                 }.lparams(0, autoSize(72), 1f) {
                                     marginEnd = autoSize(36)
@@ -425,7 +438,7 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
                             }.lparams(autoSize(485), autoSize(95))
 
                             textView {
-                                text = "现货200吨"
+                                spot_number = this
                                 textSizeAuto = 31
                                 textColorInt = R.color.rma_yellow_text_color
                             }.lparams(wrapContent, wrapContent)
@@ -440,7 +453,7 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
                                 val selectDataList = arrayListOf(
                                     SelectData(
                                         id = "0",
-                                        value = "无"
+                                        value = "无关联"
                                     ),
                                     SelectData(
                                         id = "1",
@@ -455,7 +468,7 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
                                         value = "换月"
                                     )
                                 )
-                                creatBottomSheetDialog("请选择交易类型", selectDataList) {
+                                creatBottomSheetDialog("请选择业务类型", selectDataList) {
                                     selectBusinessType.postValue(this)
                                 }
                             }
@@ -521,6 +534,9 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
                             emptyView()
 
                             textView {
+                                viewModel.selectSpotData.bindOptional(context){
+                                    text = "当前关联数量" + it?.middlegoodspricedqty3?.toDouble()?.minus(it.relatedmiddlegoodsqty?.toDouble() ?: 0.0) + "手<=" +  number_edittext.text.toString() + "手"
+                                }
                                 textSizeAuto = 29
                                 textColorInt = R.color.rma_red_color
                             }.lparams(wrapContent, wrapContent) {
@@ -740,7 +756,10 @@ class FillSingleConnectionActivity : BaseActivity<FillSingleConnectionViewModel>
                                 }
                             }
 
-                            viewModel.manageAmendOrderReq(AccountID = selectAccountData.value?.accountid?.toLong() ?: 0,BuyOrSell = selectBuyOrSell.value?.id?.toInt() ?: 0,
+                            viewModel.manageAmendOrderReq(
+                                marketId = 15101,
+                                AccountID = selectAccountData.value?.accountid?.toLong() ?: 0,
+                                BuyOrSell = selectBuyOrSell.value?.id?.toInt() ?: 0,
                                 GoodsID = selectGoods.value?.id?.toInt() ?: 0,
                                 ChannelBuildType = selectChannelBuildType.value?.id?.toInt() ?: 0,
                                 TradePrice = price_edittext.text.toString().toDouble(),

+ 3 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/perioddocuments/FillSingleConnectionViewModel.kt

@@ -105,7 +105,7 @@ class FillSingleConnectionViewModel : BaseViewModel(){
         val goodsInfoList = DataBase.getInstance().goodsInfoDao().all
         goodsInfoList.forEach {
             if (selectgoodsgroupid == it.goodsgroupid.toString() && it.goodsstatus == 3){
-                newSelectDataList.add(SelectData(id = it.goodsid.toString(),value = it.goodsname))
+                newSelectDataList.add(SelectData(id = it.goodsid.toString(),value = it.goodsname,agreeunit = it.agreeunit?.toString()))
             }
         }
         return newSelectDataList
@@ -115,6 +115,7 @@ class FillSingleConnectionViewModel : BaseViewModel(){
      * 补单关联请求
      */
     fun manageAmendOrderReq(
+        marketId : Int = 0,
         OutTradeID : Long = 0,//外部成交单号
         AccountID : Long = 0,//内部期货子账户
         BuyOrSell : Int = 0,//方向 - 0:买 1:卖
@@ -132,6 +133,7 @@ class FillSingleConnectionViewModel : BaseViewModel(){
         loadingDialogStatus.value = TaskUiModel.inFlight()
         GlobalScope.launch {
             MyApplication.getInstance()?.spotManager?.manageAmendOrderReq(
+                marketId = marketId,
                 OutTradeID = OutTradeID,
                 AccountID = AccountID,
                 BuyOrSell = BuyOrSell,

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/spot/associated/relationalrecord/RelationalRecordContentAdapter.java

@@ -94,7 +94,7 @@ public class RelationalRecordContentAdapter extends RecyclerView.Adapter<Relatio
         this.index = i;
         PaTradeLinkDetailData data = datas.get(i);
 
-        itemViewHolder.tvLeftTitle.setText( ViewEnumUtils.INSTANCE.getContractStatus(data.getHedgeflag()));
+        itemViewHolder.tvLeftTitle.setText( ViewEnumUtils.INSTANCE.gethedgeflagStatus(data.getHedgeflag()));
 //        if (datas.get(i).getGoodscode().isEmpty()){
 //            itemViewHolder.tv_left_bottom_title.setText("--");
 //        }else {

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

@@ -12,13 +12,13 @@
         android:layout_height="55dp">
 
         <LinearLayout
-            android:layout_width="160dp"
+            android:layout_width="110dp"
             android:orientation="horizontal"
             android:layout_height="match_parent">
             <LinearLayout
                 android:gravity="center_vertical"
                 android:orientation="vertical"
-                android:layout_width="130dp"
+                android:layout_width="90dp"
                 android:layout_height="match_parent">
 
                 <TextView