Sfoglia il codice sorgente

风险管理3月9日提交代码-liu.bolan-期货交易请求

Liu.bolan 4 anni fa
parent
commit
00621a922d
31 ha cambiato i file con 544 aggiunte e 135 eliminazioni
  1. 4 4
      RMA/app/src/main/java/cn/muchinfo/rma/business/future/FutureManager.kt
  2. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/future/adapter/FutureAdapter.kt
  3. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/exposure/ExposureNumberViewHolder.kt
  4. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/exposure/RealTimeExposureDetailsActivity.kt
  5. 4 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldFragment.kt
  6. 171 10
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldViewModel.kt
  7. 11 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/trade/GoodsTradeActivity.kt
  8. 24 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/AddHedgeGoodsActivity.kt
  9. 30 27
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/AddSpotGoodsActivity.kt
  10. 74 13
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/CommodityInformationViewModel.kt
  11. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/HedgeSpeciesDetailsActivity.kt
  12. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/viewholder/InsuredVarietyViewHolder.kt
  13. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractDataViewHolder.kt
  14. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractViewModel.kt
  15. 6 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/AddCustomerDataActivity.kt
  16. 11 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/financial/FinancialViewholder.kt
  17. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/financial/PaymentReviewActivity.kt
  18. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/AddHedgePlanActivity.kt
  19. 1 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgeDetailsActivity.kt
  20. 3 13
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanActivity.kt
  21. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanViewHolder.kt
  22. 4 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/registration/InvoiceRegistrationActivity.kt
  23. 4 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/registration/MidpointsRegistrationActivity.kt
  24. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/registration/PaymentRegistrationActivity.kt
  25. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/registration/SettlementRegistrationActivity.kt
  26. 7 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginActivity.kt
  27. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginViewModel.kt
  28. 62 30
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/procurement/ContractDetailActivity.kt
  29. 12 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/procurement/data/ContractDetailsData.kt
  30. 47 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/procurement/detailsviewholder/ContractDetailsViewHolder.kt
  31. 52 0
      RMA/app/src/main/res/layout/hold_item.xml

+ 4 - 4
RMA/app/src/main/java/cn/muchinfo/rma/business/future/FutureManager.kt

@@ -40,10 +40,10 @@ class FutureManager {
         // 查询最大goodsId
         var lastUpdateTime = "0"
         var params = mutableMapOf<String, String>()
-        if (SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME).isNotEmpty()){
-            lastUpdateTime = SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME)
-        }
-        params["lastUpdateTime"] = lastUpdateTime
+//        if (SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME).isNotEmpty()){
+//            lastUpdateTime = SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME)
+//        }
+//        params["lastUpdateTime"] = lastUpdateTime
         // 对接接口
         MyOkHttpUtils().query(
             URL = SPUtils.getInstance()

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/business/future/adapter/FutureAdapter.kt

@@ -44,7 +44,7 @@ object FutureAdapter {
         builder.validType = data.validType
         builder.validtime = data.validtime
 //        builder.setIP(data.ip)
-        builder.closeTodayQty = data.closeTodayQty
+//        builder.closeTodayQty = data.closeTodayQty
         builder.timeValidType = data.timeValidType
         val loginInfo = GlobalDataCollection.instance?.loginRsp!!
         // FIXME: - 250000000005

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

@@ -10,6 +10,7 @@ import cn.muchinfo.rma.view.autoWidget.autoSize
 import cn.muchinfo.rma.view.autoWidget.onThrottleFirstClick
 import cn.muchinfo.rma.view.autoWidget.textColorInt
 import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
 import cn.muchinfo.rma.view.base.home.HomeViewModel
 import com.blankj.utilcode.util.ActivityUtils
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
@@ -75,7 +76,7 @@ class ExposureNumberViewHolder(
                 textView {
                     data.bindOptional(context){
                         text = if (type == "1"){
-                            it?.oritoalspotqty
+                            NumberUtils.roundNum(it?.oritoalspotqty,2)
                         }else{
                             it?.totalydqty + "手"
                         }

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/exposure/RealTimeExposureDetailsActivity.kt

@@ -90,7 +90,7 @@ class RealTimeExposureDetailsActivity : BaseActivity<ExposureViewModel>() , Expo
                         }.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

+ 4 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldFragment.kt

@@ -71,4 +71,8 @@ class HoldFragment : BaseFragment<HoldViewModel>() {
         super.onResume()
         viewModel.queryHold()
     }
+    //主动更新数据
+    fun onRefresh(){
+        viewModel.queryHold()
+    }
 }

+ 171 - 10
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldViewModel.kt

@@ -9,17 +9,18 @@ import android.widget.TextView
 import androidx.lifecycle.MutableLiveData
 import androidx.recyclerview.widget.RecyclerView
 import cn.muchinfo.rma.R
-import cn.muchinfo.rma.business.future.FutureManager
+import cn.muchinfo.rma.business.future.adapter.ChannelOrderReqData
 import cn.muchinfo.rma.global.GlobalDataCollection
-import cn.muchinfo.rma.global.data.futureOrders.FutureEntrustData
 import cn.muchinfo.rma.global.data.futureOrders.FutureHoldData
+import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.onThrottleFirstClick
 import cn.muchinfo.rma.view.base.BaseViewModel
-import cn.muchinfo.rma.view.base.app.Constant
+import cn.muchinfo.rma.view.base.app.FutureConstent
 import cn.muchinfo.rma.view.eventbus.EventConstent
-import cn.muchinfo.rma.view.eventbus.MessageEvent
 import cn.muchinfo.rma.view.eventbus.TradeMessageEvent
-import com.blankj.utilcode.util.SPUtils
+import com.blankj.utilcode.util.TimeUtils
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
 import org.greenrobot.eventbus.EventBus
 
 /**
@@ -81,20 +82,67 @@ class HoldViewModel : BaseViewModel() {
             var idHoldAveragePrice = itemView?.findViewById<TextView>(R.id.id_hold_average_price) // 持仓均价
             var idZPl = itemView?.findViewById<TextView>(R.id.id_zpl) // 盯市浮盈
             var idPlp = itemView?.findViewById<TextView>(R.id.id_plp) // 盈亏比例
+            var id_pl = itemView?.findViewById<TextView>(R.id.id_pl)//逐笔浮盈
             var idMargin = itemView?.findViewById<TextView>(R.id.id_margin) // 保证金
+
+            var quick_backhand = itemView?.findViewById<TextView>(R.id.quick_backhand)//快捷反手
+            var key_positions = itemView?.findViewById<TextView>(R.id.key_positions)//一键平仓
+            var id_chart = itemView?.findViewById<TextView>(R.id.id_chart)//图表
+            var id_entrust_detail = itemView?.findViewById<TextView>(R.id.id_entrust_detail)//详情
         }
 
         override fun onBindViewHolder(holder: HoldHolder, position: Int) {
-            holder.idGoodsName?.text = list?.get(position)?.goodsname
-            holder.idAvailable?.text = list?.get(position)?.enableqty.toString() // 可用(总仓可用)
-            holder.idHoldTotal?.text = list?.get(position)?.curpositionqty.toString() // 持仓(总仓数量, 期末头寸)
+            holder.itemView.tag = list?.get(position)
+            val itemData = list?.get(position)
+            holder.idGoodsName?.text = itemData?.goodsname
+            holder.idAvailable?.text = itemData?.enableqty.toString() // 可用(总仓可用)
+            holder.idHoldTotal?.text = itemData?.curpositionqty.toString() // 持仓(总仓数量, 期末头寸)
+            holder.idOpenAveragePrice?.text = itemData?.openaverageprice.toString()//开仓均价【头寸变化更新】 = 开仓成本 / 期末头寸 / 合约单位
+            holder.idHoldAveragePrice?.text = itemData?.positionaverageprice.toString()//持仓均价【头寸变化更新】= 持仓成本 / 期末头寸 / 合约单位
+            holder.idZPl?.text = itemData?.positionpl.toString()//盯市浮盈【实时行情更新】(MTP:浮动盈亏、持仓盈亏) 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位;卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
+            holder.idPlp?.text = itemData?.positionplrate.toString()//持仓盈亏比例【实时行情更新】 = 持仓盈亏 / 开仓成本
+            holder.id_pl?.text = itemData?.openpl.toString()//逐笔浮盈【实时行情更新】(MTP:开仓盈亏、平仓盈亏) 买方向 = (最新价 - 开仓均价) * 买期末头寸 * 合约单位;卖方向 = (开仓均价 - 最新价) * 卖期末头寸 * 合约单位
+            holder.idMargin?.text = itemData?.usedmargin.toString()//占用保证金
             if (list?.get(position)?.buyorsell == 0) {
                 holder.idTransDirection?.text = context?.resources?.getString(R.string.str_buy)
             } else {
                 holder.idTransDirection?.text = context?.resources?.getString(R.string.str_sell)
             }
 
+            /** 快捷反手 */
+            holder.quick_backhand?.onThrottleFirstClick {
+
+            }
+
+            /** 一键平仓 **/
+            holder.key_positions?.onThrottleFirstClick {
+
+            }
+
+            /** 图表 **/
+            holder.id_chart?.onThrottleFirstClick {
+
+            }
+
+            /** 详情 **/
+            holder.id_entrust_detail?.onThrottleFirstClick {
+
+            }
+
+            if (list?.get(position)?.selected == true) {
+                holder.quick_backhand?.visibility = View.VISIBLE
+                holder.key_positions?.visibility = View.VISIBLE
+                holder.id_chart?.visibility = View.VISIBLE
+                holder.id_entrust_detail?.visibility = View.VISIBLE
+            } else if(list?.get(position)?.selected == false) {
+                holder.quick_backhand?.visibility = View.GONE
+                holder.key_positions?.visibility = View.GONE
+                holder.id_chart?.visibility = View.GONE
+                holder.id_entrust_detail?.visibility = View.GONE
+            }
+
             holder.itemView.onThrottleFirstClick {
+                clickItem(it!!)
                 val data = list?.get(position)
                 EventBus.getDefault().post(TradeMessageEvent(messageType = EventConstent.TRADEGOODSID,goodsId = data?.goodsid.toString(),buyOrSell = data?.buyorsell ?: 0,outGoodsCode = data?.outgoodscode ?: ""))
             }
@@ -120,6 +168,119 @@ class HoldViewModel : BaseViewModel() {
             return HoldHolder(inflater?.inflate(R.layout.hold_item, parent, false))
         }
 
+        /**
+         * 操作请求
+         * @param isClose Boolean 是否是平仓单
+         */
+        private fun commitDealData(isClose: Boolean) {
+            val datas = ChannelOrderReqData()
+            datas.setAccountID(GlobalDataCollection.instance?.accountId ?: 0) // 交易账号
+            val goodsQuote = GlobalDataCollection.instance?.getmGoodsInfoClass()?.get(futureHoldData?.outgoodscode)
+            if (isClose) {
+                if (futureHoldData?.buyorsell == 0) {
+                    //平仓---平买单,方向是卖
+                    datas.setBuyOrSell(0)
+                } else {
+                    //平仓---平卖单,方向是买
+                    datas.setBuyOrSell(1)
+                }
+            } else {
+                datas.setBuyOrSell(futureHoldData?.buyorsell ?: 0)
+            }
+            datas.clientOrderTime = TimeUtils.getNowString() // 客户端委托时间  当前时间
+            datas.clientType = 3 // 客户端类型: 1客户端  3 手机端 android
+            datas.goodsID = futureHoldData?.goodsid ?: 0//商品id
+            datas.loginID = GlobalDataCollection.instance?.loginRsp?.loginID ?: 0 //登录账号
+
+            datas.marketID = futureHoldData?.marketid ?: 0
+            datas.validType = 1 // 有效类型-1当日有效
+            datas.channelOperateType = FutureConstent.ChannelOperateType_ORDER // 操作类型  1:正常类型  默认写死???
+            datas.channelOrderSrc = 1 // 单据来源委托来源-1:客户端  //默认写死?
+            datas.hedgeFlag = 0 // 投机套保标志-0:无
+//            if (goodsQuote.getQuoteDay() != null && goodsInfo.getQuoteDay().getAsk() != null) {
+//                val decial: Int = goodsInfo.getGoodsInfo().getDecimalPlace()
+//                val setp: Double
+//                setp = if ("0" == overDot) { //如果没有拿到超价点数则按照原来的计算吧
+//                    goodsInfo.getGoodsInfo().getQuoteMinUnit() * Math.pow(
+//                        10.0,
+//                        -goodsInfo.getGoodsInfo().getDecimalPlace()
+//                    )
+//                } else {
+//                    goodsInfo.getGoodsInfo().getQuoteMinUnit() * Math.pow(
+//                        10.0,
+//                        -goodsInfo.getGoodsInfo().getDecimalPlace()
+//                    ) * java.lang.Double.valueOf(overDot)
+//                }
+//                val askLimitPrice: String = Utils.roundNum(
+//                    if (java.lang.Double.valueOf(
+//                            goodsInfo.getQuoteDay().getAsk()
+//                        ) != 0
+//                    ) java.lang.Double.valueOf(
+//                        goodsInfo.getQuoteDay().getAsk()
+//                    ) + setp /*limitStep*/ else 0, decial
+//                )
+//                val bidLimitPrice: String = Utils.roundNum(
+//                    if (java.lang.Double.valueOf(
+//                            goodsInfo.getQuoteDay().getBid()
+//                        ) != 0
+//                    ) java.lang.Double.valueOf(
+//                        goodsInfo.getQuoteDay().getBid()
+//                    ) - setp /*limitStep*/ else 0, decial
+//                )
+//                if (buyOrSell == 0) {
+//                    tradePrice = bidLimitPrice.toDouble()
+//                } else {
+//                    tradePrice = askLimitPrice.toDouble()
+//                }
+//            }
+//            datas.orderPrice = orderPrice.toDouble()
+            datas.orderQty = futureHoldData?.enableqty?.toLong() ?: 0
+
+            if (isClose) {
+                // 平仓
+                datas.closeType = 2
+                datas.channelBuildType = FutureConstent.eChannelBuildType_CLOSE // 下单类型  建仓还是平仓
+            } else {
+                // 买卖建仓
+                datas.closeType = 1
+                datas.channelBuildType = FutureConstent.eChannelBuildType_OPEN // 下单类型  建仓还是平仓
+            }
+            datas.priceMode = FutureConstent.PriceMode_PRICEMODE_LIMIT // 限价
+//            datas.setCloseTodayQty(amountInputEdittext.text.toString().toLong())
+//        if (goodsInfo.getInnerDealMode() === 3) {
+//            if (mTradeSummaryData != null) {
+//                val todayAvailQty: String =
+//                    java.lang.String.valueOf(mTradeSummaryData.getTodayAvailQty())
+//                if (mTradeSummaryData.getTodayAvailQty() > 0) { //
+//                    if (mTradeSummaryData.getTodayAvailQty() > tradeNum) { // 如果平今的大于输入的数量,那就不要使用平今数量,直接赋值tradeNum给CloseTodayQty
+//                        datas.setCloseTodayQty(java.lang.Double.valueOf(tradeNum).toLong())
+//                    } else {
+//                        datas.setCloseTodayQty(
+//                            java.lang.Double.valueOf(todayAvailQty.trim { it <= ' ' }).toLong()
+//                        )
+//                    }
+//                } else {
+//                    datas.setCloseTodayQty(0)
+//                }
+//            }
+//        }
+            datas.setTimeValidType(FutureConstent.ValidTypeEnum_VALIDTYPE_DR) // 时间有效类型   默认写死当日有效
+            datas.setRelatedID(0) // 关联单号 默认写死
+            datas.setServiceTime("") //服务端时间string
+            //        datas.setIp(PolApplication.getIPAddress(getContext()));B
+//        val bbb: String = Utils.getCommonIp()
+//        datas.setIp(bbb)
+            datas.setValidtime("") // 有效时间string
+            GlobalScope.launch {
+                MyApplication.getInstance()?.futureManager?.tradeRequest(data = datas){isCompleted, err ->
+                    if (isCompleted){
+
+                    }
+                }
+            }
+        }
+
+
     }
 
     /**
@@ -127,11 +288,11 @@ class HoldViewModel : BaseViewModel() {
      */
     fun queryHold() {
         val params = mutableMapOf<String, String>()
-        params["accountID"] = SPUtils.getInstance().getLong(Constant.SELECT_ACCOUNT_ID).toString()
+        params["accountID"] = GlobalDataCollection.instance?.accountId.toString()
 //        if (marketID != null) {
 //            params["marketID"] = marketID!!
 //        }
-        FutureManager().queryErmcpTradePosition(params) { isSuccess, respData, _ ->
+        MyApplication.getInstance()?.futureManager?.queryErmcpTradePosition(params) { isSuccess, respData, _ ->
             if (isSuccess && !respData!!.isNullOrEmpty()) {
                 list = respData as ArrayList<FutureHoldData>
                 holdLiveData.value = list

+ 11 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/trade/GoodsTradeActivity.kt

@@ -1012,17 +1012,17 @@ class GoodsTradeActivity : BaseActivity<GoodsTradeViewModel>() {
         if (isClose) {
             if (buyOrSell == 0) {
                 //平仓---平买单,方向是卖
-                datas.setBuyOrSell(1)
+                datas.setBuyOrSell(0)
             } else {
                 //平仓---平卖单,方向是买
-                datas.setBuyOrSell(0)
+                datas.setBuyOrSell(1)
             }
         } else {
             datas.setBuyOrSell(buyOrSell)
         }
         datas.clientOrderTime = TimeUtils.getNowString() // 客户端委托时间  当前时间
         datas.clientType = 3 // 客户端类型: 1客户端  3 手机端 android
-        datas.goodsID = goodsId?.toInt() ?: 0//商品id
+        datas.goodsID = goodsInfoData.value?.goodsid ?: 0//商品id
         datas.loginID = GlobalDataCollection.instance?.loginRsp?.loginID ?: 0 //登录账号
 
         datas.marketID = goodsInfoData.value?.marketid ?: 0
@@ -1070,7 +1070,15 @@ class GoodsTradeActivity : BaseActivity<GoodsTradeViewModel>() {
 //        datas.setIp(bbb)
         datas.setValidtime("") // 有效时间string
         viewModel.tradeRequest(data = datas) { isCompleted ->
+            if (isCompleted){
+                if (selectedTabIndex == 0){
+                    (tabFragments.get(selectedTabIndex) as HoldFragment).onRefresh()
+                }else if (selectedTabIndex == 1){
 
+                }else if (selectedTabIndex == 2){
+
+                }
+            }
         }
     }
 

+ 24 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/AddHedgeGoodsActivity.kt

@@ -12,6 +12,7 @@ import cn.muchinfo.rma.global.data.AvaildGoodsGroupData
 import cn.muchinfo.rma.global.data.GGConvertConfigData
 import cn.muchinfo.rma.global.data.MiddleGoodsData
 import cn.muchinfo.rma.global.isBlankString
+import cn.muchinfo.rma.global.toPercentage
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
@@ -25,6 +26,7 @@ import mtp.polymer.com.autowidget.dialog.creatHedgeBottomSheetDialog
 import mtp.polymer.com.autowidget.dialog.createLoadingDialog
 import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
+import org.jetbrains.anko.sdk25.coroutines.textChangedListener
 
 class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
 
@@ -134,7 +136,7 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                             }
 
                             textView {
-                                selectAvalidGoodsData.bindOptional(context){
+                                selectAvalidGoodsData.bindOptional(context) {
                                     text = it?.goodsgroupname
                                 }
                                 text = "请选择套保品种名称"
@@ -240,6 +242,7 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                                     setText(data.needhedgeratio)
                                 }
                                 hedge_ratio_edtittext = this
+
                                 hint = "请输入套保比例"
                                 background = null
                                 inputType = EditorInfo.TYPE_CLASS_NUMBER
@@ -247,9 +250,17 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                                 hintColorStr = "#CCCCCC"
                                 textSizeAuto = 31
                                 textColorStr = "#333333"
-                            }.lparams(matchParent, autoSize(132)) {
+                            }.lparams(0, autoSize(132),1f) {
                                 marginStart = autoSize(80)
                             }
+
+                            textView {
+                                text = "%"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent){
+                                marginEnd = autoSize(36)
+                            }
                         }.lparams(matchParent, autoSize(132))
 
                         baseInformationView("期货品种信息")
@@ -312,9 +323,10 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                                     goodsunitid = data1?.goodunitid?.toInt() ?: 0,
                                     goodsgroupid = data1?.goodsgroupid?.toLong() ?: 0,
                                     remark = remask_edittext.text.toString(),
-                                    areauserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0,
+                                    areauserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong()
+                                        ?: 0,
                                     needhedgeratio = hedge_ratio_edtittext.text.toString()
-                                        .toDouble()
+                                        .toDouble().div(100)
                                 ) {
                                     finish()
                                 }
@@ -324,17 +336,22 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                                     needhedgeratio = hedge_ratio_edtittext.text.toString()
                                         .toDouble() ?: 0.0,
                                     goodsgroupid = data.goodsgroupid?.toLong() ?: 0,
-                                    areauserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0,
+                                    areauserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong()
+                                        ?: 0,
                                     remark = remask_edittext.text.toString()
                                 ) {
                                     finish()
                                 }
                             } else if (type == "3") {
-                                viewModel.requestErmsMiddelGoodsStopReq(middlegoodsid = data.middlegoodsid?.toLong() ?: 0,isvalid = 0){
+                                viewModel.requestErmsMiddelGoodsStopReq(
+                                    middlegoodsid = data.middlegoodsid?.toLong() ?: 0, isvalid = 0
+                                ) {
                                     finish()
                                 }
                             } else if (type == "5") {
-                                viewModel.requestErmsMiddelGoodsStopReq(middlegoodsid = data.middlegoodsid?.toLong() ?: 0,isvalid = 1){
+                                viewModel.requestErmsMiddelGoodsStopReq(
+                                    middlegoodsid = data.middlegoodsid?.toLong() ?: 0, isvalid = 1
+                                ) {
                                     finish()
                                 }
                             }

+ 30 - 27
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/AddSpotGoodsActivity.kt

@@ -22,6 +22,7 @@ import cn.muchinfo.rma.view.base.home.contract.ContractDataViewHolder
 import cn.muchinfo.rma.view.base.home.contract.baseInformationView
 import cn.muchinfo.rma.view.base.home.contract.emptyView
 import cn.muchinfo.rma.view.base.home.contract.viewItemUI
+import com.blankj.utilcode.util.LogUtils
 import com.blankj.utilcode.util.ToastUtils
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
 import mtp.polymer.com.autowidget.dialog.SelectData
@@ -69,7 +70,7 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
     private val brandModelAdapter: BaseAdapter<SpotInfoData, SpotModelViewHolder> =
         BaseAdapter { _, _ -> SpotModelViewHolder(this, viewModel, "2",operationType = type ?: "") }
 
-    //品牌适配
+    //套保
     private val middleGoodsAdapter: BaseAdapter<SpotInfoData, InsuredVarietyViewHolder> =
         BaseAdapter { _, _ -> InsuredVarietyViewHolder(this, viewModel,operationType = type ?: "") }
 
@@ -301,6 +302,16 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                         viewItemUI()
 
                         linearLayout {
+                            onThrottleFirstClick {
+                                if (type == "4" || type == "3" || type == "5"){
+                                    return@onThrottleFirstClick
+                                }
+                                viewModel.changeSpotModelList(
+                                    "1",
+                                    viewModel.spotModelList.value?.size?.plus(1).toString(),
+                                    value = ""
+                                )
+                            }
                             background = resources.getDrawable(R.color.white)
                             gravity = Gravity.CENTER_VERTICAL
                             emptyView()
@@ -309,16 +320,7 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                             }.lparams(autoSize(36), autoSize(36))
 
                             textView {
-                                onThrottleFirstClick {
-                                    if (type == "4" || type == "3" || type == "5"){
-                                        return@onThrottleFirstClick
-                                    }
-                                    viewModel.changeSpotModelList(
-                                        "1",
-                                        viewModel.spotModelList.value?.size?.plus(1).toString(),
-                                        value = ""
-                                    )
-                                }
+
                                 text = "添加型号"
                                 textColorInt = R.color.rma_blue_color
                                 textSizeAuto = 31
@@ -341,6 +343,16 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                         viewItemUI()
 
                         linearLayout {
+                            onThrottleFirstClick {
+                                if (type == "4" || type == "3" || type == "5"){
+                                    return@onThrottleFirstClick
+                                }
+                                viewModel.changeSpotModelList(
+                                    "1",
+                                    viewModel.spotModelList.value?.size?.plus(1).toString(),
+                                    value = ""
+                                )
+                            }
                             background = resources.getDrawable(R.color.white)
                             gravity = Gravity.CENTER_VERTICAL
                             emptyView()
@@ -349,16 +361,7 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                             }.lparams(autoSize(36), autoSize(36))
 
                             textView {
-                                onThrottleFirstClick {
-                                    if (type == "4" || type == "3" || type == "5"){
-                                        return@onThrottleFirstClick
-                                    }
-                                    viewModel.changeSpotModelList(
-                                        "1",
-                                        viewModel.spotModelList.value?.size?.plus(1).toString(),
-                                        value = ""
-                                    )
-                                }
+
                                 text = "添加品牌"
                                 textColorInt = R.color.rma_blue_color
                                 textSizeAuto = 31
@@ -525,7 +528,7 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
      */
     private fun getSpotModelList(): List<ManageServiceMI2.SpotGoodsModelEx> {
         val spotgoodsmodels = arrayListOf<ManageServiceMI2.SpotGoodsModelEx>()
-        viewModel.spotModelList.value?.forEach {
+        viewModel.spotModelcacheList.value?.forEach {
             val spotGoodsData = ManageServiceMI2.SpotGoodsModelEx.newBuilder()
             spotGoodsData.modelname = it.value
             spotgoodsmodels.add(spotGoodsData.build())
@@ -539,7 +542,7 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
      */
     private fun getBrandModelList(): List<ManageServiceMI2.SpotGoodsBrandEx> {
         val brandgoodsmodels = arrayListOf<ManageServiceMI2.SpotGoodsBrandEx>()
-        viewModel.brandModelList.value?.forEach {
+        viewModel.brandModelcacheList.value?.forEach {
             val spotGoodsData = ManageServiceMI2.SpotGoodsBrandEx.newBuilder()
             spotGoodsData.brandname = it.value
             brandgoodsmodels.add(spotGoodsData.build())
@@ -553,7 +556,7 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
      */
     private fun getMiddleModelList(): List<ManageServiceMI2.WRSConvertDetailEx> {
         val middlegoodsmodels = arrayListOf<ManageServiceMI2.WRSConvertDetailEx>()
-        viewModel.middlegoodList.value?.forEach {
+        viewModel.middlegoodCacheList.value?.forEach {
             val spotGoodsData = ManageServiceMI2.WRSConvertDetailEx.newBuilder()
             spotGoodsData.middlegoodsid = it.middleGoodsId.toLong()
             spotGoodsData.convertratio = it.value.toDouble()
@@ -578,21 +581,21 @@ class AddSpotGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
             return false
         }
 
-        viewModel.spotModelList.value?.forEach {
+        viewModel.spotModelcacheList.value?.forEach {
             if (it.value.isNullOrEmpty()) {
                 ToastUtils.showLong("请输入型号")
                 return false
             }
         }
 
-        viewModel.brandModelList.value?.forEach {
+        viewModel.brandModelcacheList.value?.forEach {
             if (it.value.isNullOrEmpty()) {
                 ToastUtils.showLong("请输入品牌")
                 return false
             }
         }
 
-        viewModel.middlegoodList.value?.forEach {
+        viewModel.middlegoodCacheList.value?.forEach {
             if (it.middleGoodsName.isNullOrEmpty()) {
                 ToastUtils.showLong("请选择套保类型")
                 return false

+ 74 - 13
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/CommodityInformationViewModel.kt

@@ -57,16 +57,31 @@ class CommodityInformationViewModel : BaseViewModel() {
     val brandModelList: MutableLiveData<List<SpotInfoData>> = MutableLiveData()
 
     /**
+     * 新增现货品种时的品牌列表数据
+     */
+    val brandModelcacheList: MutableLiveData<List<SpotInfoData>> = MutableLiveData()
+
+    /**
      * 新增现货品种时的型号列表数据
      */
     val spotModelList: MutableLiveData<List<SpotInfoData>> = MutableLiveData()
 
     /**
+     * 暂存的型号列表数据
+     */
+    val spotModelcacheList: MutableLiveData<List<SpotInfoData>> = MutableLiveData()
+
+    /**
      * 新增现货品种时的套保品种信息
      */
     val middlegoodList: MutableLiveData<List<SpotInfoData>> = MutableLiveData()
 
     /**
+     * 新增现货品种时的套保品种信息
+     */
+    val middlegoodCacheList: MutableLiveData<List<SpotInfoData>> = MutableLiveData()
+
+    /**
      * 新增套保品种时的套保品种名称选择
      */
     val avalidGoodsList: MutableLiveData<List<AvaildGoodsGroupData>> = MutableLiveData()
@@ -169,19 +184,22 @@ class CommodityInformationViewModel : BaseViewModel() {
         enumdicname: String = "",
         middleGoodsName: String = ""
     ) {
+        val oldDataCacheList = middlegoodCacheList.value?.toArrayList()
         val oldDataList = middlegoodList.value?.toArrayList()
         val newDataList = arrayListOf<SpotInfoData>()
         if (type == "1") {
-            oldDataList?.forEach {
+            oldDataCacheList?.forEach {
                 newDataList.add(it)
             }
             newDataList.add(SpotInfoData(id = id, value = ano, middleGoodsId = middlegoodsId))
+            middlegoodList.postValue(newDataList)
         } else if (type == "2") {
-            oldDataList?.forEach {
+            oldDataCacheList?.forEach {
                 if (id != it.id) {
-                    newDataList.add(it.copy(id = oldDataList.indexOf(it).plus(1).toString()))
+                    newDataList.add(it.copy(id = oldDataCacheList.indexOf(it).plus(1).toString()))
                 }
             }
+            middlegoodList.postValue(newDataList)
         } else if (type == "3") {
             oldDataList?.forEach {
                 var newMiddlegoodsId = ""
@@ -216,8 +234,44 @@ class CommodityInformationViewModel : BaseViewModel() {
                     newDataList.add(it)
                 }
             }
+            middlegoodCacheList.postValue(newDataList)
+        }else if (type == "4") {//用于选择套保品种
+            oldDataList?.forEach {
+                var newMiddlegoodsId = ""
+                var newEnumdicname = ""
+                var newMiddleGoodsName = ""
+                var newData: SpotInfoData
+                if (it.id == id) {
+                    newMiddlegoodsId = if (middlegoodsId.isNullOrEmpty()) {
+                        it.middleGoodsId
+                    } else {
+                        middlegoodsId
+                    }
+                    newMiddleGoodsName = if (middleGoodsName.isNullOrEmpty()) {
+                        it.middleGoodsName
+                    } else {
+                        middleGoodsName
+                    }
+                    newEnumdicname = if (enumdicname.isNullOrEmpty()) {
+                        it.enumdicname
+                    } else {
+                        enumdicname
+                    }
+                    newData = it.copy(
+                        id = id,
+                        value = ano,
+                        middleGoodsId = newMiddlegoodsId,
+                        enumdicname = newEnumdicname,
+                        middleGoodsName = newMiddleGoodsName
+                    )
+                    newDataList.add(newData)
+                } else {
+                    newDataList.add(it)
+                }
+            }
+            middlegoodList.postValue(newDataList)
         }
-        middlegoodList.postValue(newDataList)
+
     }
 
     /**
@@ -225,19 +279,22 @@ class CommodityInformationViewModel : BaseViewModel() {
      * type 1为添加,2为删除 ,3为更换资料
      */
     fun changeSpotModelList(type: String, id: String, value: String) {
+        val oldDatacacheList = spotModelcacheList.value?.toArrayList()
         val oldDataList = spotModelList.value?.toArrayList()
         val newDataList = arrayListOf<SpotInfoData>()
         if (type == "1") {
-            oldDataList?.forEach {
+            oldDatacacheList?.forEach {
                 newDataList.add(it)
             }
             newDataList.add(SpotInfoData(id = id))
+            spotModelList.postValue(newDataList)
         } else if (type == "2") {
-            oldDataList?.forEach {
+            oldDatacacheList?.forEach {
                 if (id != it.id) {
-                    newDataList.add(it.copy(id = oldDataList.indexOf(it).plus(1).toString()))
+                    newDataList.add(it.copy(id = oldDatacacheList.indexOf(it).plus(1).toString()))
                 }
             }
+            spotModelList.postValue(newDataList)
         } else if (type == "3") {
             oldDataList?.forEach {
                 if (it.id == id) {
@@ -245,10 +302,10 @@ class CommodityInformationViewModel : BaseViewModel() {
                 } else {
                     newDataList.add(it)
                 }
-
             }
+            spotModelcacheList.postValue(newDataList)
         }
-        spotModelList.postValue(newDataList)
+
     }
 
     /**
@@ -256,19 +313,22 @@ class CommodityInformationViewModel : BaseViewModel() {
      * type 1为添加,2为删除 ,3为更换资料
      */
     fun changeBrandModelList(type: String, id: String, value: String) {
+        val oldDataCacheList = brandModelcacheList.value?.toArrayList()
         val oldDataList = brandModelList.value?.toArrayList()
         val newDataList = arrayListOf<SpotInfoData>()
         if (type == "1") {
-            oldDataList?.forEach {
+            oldDataCacheList?.forEach {
                 newDataList.add(it)
             }
             newDataList.add(SpotInfoData(id = id))
+            brandModelList.postValue(newDataList)
         } else if (type == "2") {
-            oldDataList?.forEach {
+            oldDataCacheList?.forEach {
                 if (id != it.id) {
-                    newDataList.add(it.copy(id = oldDataList.indexOf(it).plus(1).toString()))
+                    newDataList.add(it.copy(id = oldDataCacheList.indexOf(it).plus(1).toString()))
                 }
             }
+            brandModelList.postValue(newDataList)
         } else if (type == "3") {
             oldDataList?.forEach {
                 if (it.id == id) {
@@ -278,8 +338,9 @@ class CommodityInformationViewModel : BaseViewModel() {
                 }
 
             }
+            brandModelcacheList.postValue(newDataList)
         }
-        brandModelList.postValue(newDataList)
+
     }
 
     /**

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

@@ -198,7 +198,7 @@ class GoodsDetailsUI(
                 list?.forEach {
                     viewItemUI()
                     contentItem(itemTile = "期货品种" + list.indexOf(it).plus(1),itemContent = it.goodsgroupname?.isBlankString() ?: "")
-                    contentItem(itemTile = "期货品种系数" + list.indexOf(it).plus(1),itemContent = it.convertratio?.toPercentage() ?: "")
+                    contentItem(itemTile = "期货品种系数" + list.indexOf(it).plus(1),itemContent = it.convertratio ?: "")
                 }
             }
             viewItemUI()

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/viewholder/InsuredVarietyViewHolder.kt

@@ -45,7 +45,7 @@ class InsuredVarietyViewHolder(
                     }
 
                     activity.creatGoodsHedgeBottomSheetDialog("请选择套保品种", viewModel.middleGoodsNormalList.value ?: arrayListOf()) {
-                        viewModel.changeMiddleGoodsList(type = "3",id = dataIndex.plus(1).toString(),ano = "",middlegoodsId = this.middlegoodsid ?: "",enumdicname = this.enumdicname ?: "",middleGoodsName = this.middlegoodsname ?: "")
+                        viewModel.changeMiddleGoodsList(type = "4",id = dataIndex.plus(1).toString(),ano = "",middlegoodsId = this.middlegoodsid ?: "",enumdicname = this.enumdicname ?: "",middleGoodsName = this.middlegoodsname ?: "")
                     }
                 }
                 textView {

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

@@ -96,9 +96,9 @@ class ContractDataViewHolder(
                     textView {
                         data.bindOptional(context) {
                             text = if (it?.contracttype == "1") {
-                                it.buyusername
+                                it.sellusername
                             } else {
-                                it?.sellusername
+                                it?.buyusername
                             }
                         }
                         textSizeAuto = 29

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

@@ -268,8 +268,8 @@ class ContractViewModel : BaseViewModel() {
      */
     fun selectWrStandardBrand(data: WrStandardDetail): ArrayList<SelectData> {
         val wrstandardBrand = arrayListOf<SelectData>()
-        data.gtList.forEach {
-            wrstandardBrand.add(SelectData(id = it.modelid, value = it.modelname))
+        data.gbList.forEach {
+            wrstandardBrand.add(SelectData(id = it.brandid, value = it.brandname))
         }
         return wrstandardBrand
     }

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

@@ -867,7 +867,12 @@ class AddCustomerDataActivity : BaseActivity<CustomerDataViewModel>() {
     private fun addUserInfo(isDraft: Boolean) {
         // 客户资料参数
         val params = mutableMapOf<String, Any>()
-        params["userid"] = 1
+        if (data.userid == 0){
+            params["userid"] = 1
+        }else{
+            params["userid"] = data.userid ?: 1
+        }
+
         // FIXME: - 客户类型暂时写死为"企业"
         params["userinfotype"] = customerType.value?.id?.toInt() ?: 0
         // 企业名称

+ 11 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/financial/FinancialViewholder.kt

@@ -161,7 +161,7 @@ class FinancialViewholder(private val activity: AppCompatActivity, private val v
 
                     textView {
                          data.bindOptional(context){
-                            text = ViewEnumUtils.getBusinessManagementStatus(it?.contractstatus ?: "")
+                            text = ViewEnumUtils.getBusinessManagementStatus(it?.applystatus ?: "")
                         }
                         textSizeAuto = 29
                         textColorInt = R.color.rma_black_33
@@ -201,10 +201,10 @@ class FinancialViewholder(private val activity: AppCompatActivity, private val v
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
                     data.bindOptional(context){
-                        if (it?.contractstatus == "2"){
-                            visibility = View.VISIBLE
-                        }else{
+                        if (it?.applystatus == "2"){
                             visibility = View.GONE
+                        }else{
+                            visibility = View.VISIBLE
                         }
                     }
                      text = if (type == "1"){
@@ -219,6 +219,13 @@ class FinancialViewholder(private val activity: AppCompatActivity, private val v
                 }
 
                 textView {
+                    onThrottleFirstClick {
+                        val intent = Intent()
+                        intent.putExtra("data",data.value)
+                        intent.putExtra("type","3")
+                        intent.setClass(context, PaymentReviewActivity::class.java)
+                        ActivityUtils.startActivity(intent)
+                    }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
                     textResource = R.string.details

+ 2 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/financial/PaymentReviewActivity.kt

@@ -10,6 +10,7 @@ import android.widget.EditText
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.ViewEnumUtils
 import cn.muchinfo.rma.global.data.FinancialManageData
+import cn.muchinfo.rma.global.isBlankString
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.autoWidget.calendar.CalendarDialog
@@ -170,7 +171,7 @@ class PaymentReviewActivity : BaseActivity<FinancialViewModel>() {
                                     linearLayout {
                                         emptyView()
                                         textView {
-                                            text = data.goodsname
+                                            text = data.goodsname?.isBlankString()
                                             textSizeAuto = 29
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent) {

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

@@ -176,6 +176,7 @@ class AddHedgePlanActivity : BaseActivity<HedgePlanViewModel>() {
 
                             editText {
                                 planNameEdittext = this
+
                                 hint = "请输入计划名称"
                                 background = null
                                 inputType = EditorInfo.TYPE_CLASS_TEXT

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

@@ -103,9 +103,7 @@ class HedgeDetailsActivity : BaseActivity<HedgePlanViewModel>() {
 
                             creatHedgeItemView(
                                 titleString = "计划名称",
-                                content = data.wrstandardname + "#套保" + ViewEnumUtils.getContractType(
-                                    data.contracttype ?: ""
-                                ) + "计划"
+                                content = data.hedgeplanno.toString()
                             )
 
                             viewItemUI()

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

@@ -89,13 +89,9 @@ class HedgePlanActivity : BaseActivity<HedgePlanViewModel>() {
 
     override fun onResume() {
         super.onResume()
-        if (selectedTabIndex == 0){
-            viewModel.queryHedegList("0")
-        }else if (selectedTabIndex == 1){
-            viewModel.queryHedegList("1")
-        }else if (selectedTabIndex == 2){
-            viewModel.queryHedegList("2")
-        }
+        viewModel.queryHedegList("0")
+        viewModel.queryHedegList("1")
+        viewModel.queryHedegList("2")
     }
 
 
@@ -414,12 +410,6 @@ fun _LinearLayout.creatHedgeHeadUI() {
 
         verticalLayout {
             textView {
-                text = "计划编号/"
-                textColorInt = R.color.hint_text_color
-                textSizeAuto = 24
-            }.lparams(wrapContent, wrapContent)
-
-            textView {
                 text = "状态"
                 textColorInt = R.color.hint_text_color
                 textSizeAuto = 24

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

@@ -127,6 +127,7 @@ class HedgePlanViewHolder(private val activity: AppCompatActivity,private val vi
                 verticalLayout {
 
                     textView {
+                        visibility = View.GONE
                         data.bindOptional(context){
                             text = it?.hedgeplanno
                         }

+ 4 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/registration/InvoiceRegistrationActivity.kt

@@ -10,6 +10,7 @@ import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.ViewEnumUtils
 import cn.muchinfo.rma.global.data.ContractData
+import cn.muchinfo.rma.global.isBlankNumber
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.netManage.utils.UpLoadUtils
@@ -106,7 +107,7 @@ class InvoiceRegistrationActivity : BaseActivity<RegistrationViewModel>() {
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)
                                         textView {
-                                            text = data.spotcontractid
+                                            text = data.contractno
                                             textSizeAuto = 17
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)
@@ -328,7 +329,7 @@ class InvoiceRegistrationActivity : BaseActivity<RegistrationViewModel>() {
                                     linearLayout {
                                         emptyView()
                                         textView {
-                                            text = "500000元"
+                                            text = data.reckonotheramount.toString().isBlankNumber() + "元"
                                             textSizeAuto = 29
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)
@@ -448,7 +449,7 @@ class InvoiceRegistrationActivity : BaseActivity<RegistrationViewModel>() {
                                 }
 
                                 textView {
-                                    text = ((data.loanamount?.toDouble() ?: 0.0).minus(data.reckonotheramount?.toDouble() ?: 0.0).minus(data.invoiceamount?.toDouble() ?: 0.0)).toString()
+                                    text = data.daikaiamount
                                     textSizeAuto = 29
                                     textColorInt = R.color.rma_blue_color
                                 }.lparams(wrapContent, wrapContent){

+ 4 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/registration/MidpointsRegistrationActivity.kt

@@ -13,6 +13,7 @@ import cn.muchinfo.rma.global.ViewEnumUtils
 import cn.muchinfo.rma.global.data.ContractData
 import cn.muchinfo.rma.protobuf.protoclasses.ErmcpMI1
 import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.home.contract.emptyView
 import com.blankj.utilcode.util.ToastUtils
@@ -105,7 +106,7 @@ class MidpointsRegistrationActivity : BaseActivity<RegistrationViewModel>() {
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)
                                         textView {
-                                            text = data.spotcontractid
+                                            text = data.contractno
                                             textSizeAuto = 17
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)
@@ -223,7 +224,7 @@ class MidpointsRegistrationActivity : BaseActivity<RegistrationViewModel>() {
                                     linearLayout {
                                         emptyView()
                                         textView {
-                                            text = data.goodscode
+                                            text = data.goodsname
                                             textSizeAuto = 29
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent) {
@@ -309,7 +310,7 @@ class MidpointsRegistrationActivity : BaseActivity<RegistrationViewModel>() {
                                     linearLayout {
                                         emptyView()
                                         textView {
-                                            text = data.pricedavg + "元/" + data.enumdicname
+                                            text = NumberUtils.roundNum(data.pricedavg,2) + "元/" + data.enumdicname
                                             textSizeAuto = 29
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent) {

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

@@ -97,7 +97,7 @@ class PaymentRegistrationActivity : BaseActivity<RegistrationViewModel>() {
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)
                                         textView {
-                                            text = data.spotcontractid
+                                            text = data.contractno
                                             textSizeAuto = 17
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)

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

@@ -128,7 +128,7 @@ class SettlementRegistrationActivity : BaseActivity<RegistrationViewModel>() {
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)
                                         textView {
-                                            text = data.spotcontractid
+                                            text = data.contractno
                                             textSizeAuto = 17
                                             textColorInt = R.color.rma_black_33
                                         }.lparams(wrapContent, wrapContent)

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

@@ -208,8 +208,13 @@ class LoginActivity : BaseActivity<LoginViewModel>() {
                         return@loginQuery
                     }
                     MyApplication.getInstance()?.futureManager?.queryGoodsList { isCompleted, err ->
-                        viewModel.loadingDialogStatus.value = TaskUiModel.success(msg = "登录成功")
-                        goHomePage()
+                        if (isCompleted){
+                            viewModel.loadingDialogStatus.value = TaskUiModel.success(msg = "登录成功")
+                            goHomePage()
+                        }else{
+                            viewModel.loadingDialogStatus.value = TaskUiModel.failed(InteractiveException(errorMessage = "商品请求失败"))
+                        }
+
                     }
                 }
             }

+ 1 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginViewModel.kt

@@ -40,6 +40,7 @@ class LoginViewModel : BaseViewModel() {
         // 先获取LoginID
         accountManager.queryLoginID(code) { isCompleted, err, loginID ->
             if (!isCompleted) {
+                loadingDialogStatus.postValue(TaskUiModel.failed(InteractiveException(errorMessage = err?.message ?: "")))
                 callback(false, err)
                 return@queryLoginID
             }

+ 62 - 30
RMA/app/src/main/java/cn/muchinfo/rma/view/base/procurement/ContractDetailActivity.kt

@@ -21,7 +21,9 @@ import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.home.business.BusinessManagementViewholder
 import cn.muchinfo.rma.view.base.home.commodity.viewholder.ChangeLogViewHolder
 import cn.muchinfo.rma.view.base.home.contract.viewItemUI
+import cn.muchinfo.rma.view.base.procurement.data.ContractDetailsData
 import cn.muchinfo.rma.view.base.procurement.detailsviewholder.ChangeRecordViewHolder
+import cn.muchinfo.rma.view.base.procurement.detailsviewholder.ContractDetailsViewHolder
 import cn.muchinfo.rma.view.base.procurement.detailsviewholder.InvoiceRecordViewHolder
 import cn.muchinfo.rma.view.base.procurement.detailsviewholder.PriceRecordViewHolder
 import com.blankj.utilcode.util.ConvertUtils
@@ -207,38 +209,68 @@ class ContractDetailsUI(
     private val data: ContractData
 ) {
 
+    private val unSubmitAdapter: BaseAdapter<ContractDetailsData, ContractDetailsViewHolder> = BaseAdapter { _, _ -> ContractDetailsViewHolder(activity) }
     val root = _FrameLayout(activity).apply {
         verticalLayout {
-            scrollView {
-                verticalLayout {
-                    contentItem(itemTile = ViewEnumUtils.getContractType(data.contracttype ?: "") + "-" + ViewEnumUtils.getPriceType(data.pricetype ?: "") + "合同",itemContent = data.contractno?.isBlankString() ?: "")
-                    viewItemUI()
-                    contentItem(itemTile = if (data.contracttype == "1") { "销售方" }else{ "采购方" } ,itemContent = if (data.contracttype == "1") { data?.sellusername ?: "" }else{ data?.buyusername ?: "" })
-                    viewItemUI()
-                    contentItem(itemTile = "现货品种",itemContent = data.deliverygoodsname ?: "")
-                    viewItemUI()
-                    contentItem(itemTile = "产品类型",itemContent = ViewEnumUtils.getProductType(data.producttype ?: ""))
-                    viewItemUI()
-                    contentItem(itemTile = "产品规格",itemContent = data?.spotgoodsdesc ?: "")
-                    viewItemUI()
-                    contentItem(itemTile = "定价类型",itemContent = ViewEnumUtils.getPriceType(data.pricetype ?: ""))
-                    viewItemUI()
-                    contentItem(itemTile = "期货合约",itemContent = data.goodscode ?: "")
-                    viewItemUI()
-                    contentItem(itemTile = "升贴水",itemContent = data.pricemove ?: "")
-                    viewItemUI()
-                    contentItem(itemTile = "标仓系数",itemContent = data.convertfactor ?: "")
-                    viewItemUI()
-                    contentItem(itemTile = "点价期",itemContent = data.startdate?.isShowTimeString("MM-dd") + "~" + data.enddate?.isShowTimeString("MM-dd"))
-                    viewItemUI()
-                    contentItem(itemTile = "点价期",itemContent = data.deliverystartdate?.isShowTimeString("MM-dd") + "~" + data.deliveryenddate?.isShowTimeString("MM-dd"))
-                    viewItemUI()
-                    contentItem(itemTile = "合同量",itemContent = data.qty ?: "" + data.enumdicname ?: "")
-                    viewItemUI()
-                    contentItem(itemTile = "初始保证金",itemContent = data.margin ?: "")
-                }
-            }
-        }
+
+            recyclerView {
+                background = resources.getDrawable(R.color.white)
+                adapter = unSubmitAdapter
+            }.lparams(matchParent, autoSize(1600))
+
+            val datalist = arrayListOf<ContractDetailsData>(
+                ContractDetailsData(title = ViewEnumUtils.getContractType(data.contracttype ?: "") + "-" + ViewEnumUtils.getPriceType(data.pricetype ?: "") + "合同",content = data.contractno?.isBlankString() ?: ""),
+                ContractDetailsData(title = if (data.contracttype == "1") { "销售方" }else{ "采购方" },content = if (data.contracttype == "1") { data.sellusername ?: "" }else{ data.buyusername ?: "" }),
+                ContractDetailsData(title = "现货品种",content = data.deliverygoodsname ?: ""),
+                ContractDetailsData(title = "产品类型",content = ViewEnumUtils.getProductType(data.producttype ?: "")),
+                ContractDetailsData(title = "产品规格",content = data.spotgoodsdesc ?: ""),
+                ContractDetailsData(title = "定价类型",content = ViewEnumUtils.getPriceType(data.pricetype ?: "")),
+                ContractDetailsData(title = "期货合约",content = data.goodsname ?: ""),
+                ContractDetailsData(title = "升贴水",content = data.pricemove ?: ""),
+                ContractDetailsData(title = "标仓系数",content = data.convertfactor ?: ""),
+                ContractDetailsData(title = "点价期",content = data.startdate?.isShowTimeString("MM-dd") + "~" + data.enddate?.isShowTimeString("MM-dd")),
+                ContractDetailsData(title = "交收期",content = data.deliverystartdate?.isShowTimeString("MM-dd") + "~" + data.deliveryenddate?.isShowTimeString("MM-dd")),
+                ContractDetailsData(title = "合同量",content = data.qty ?: "" + data.enumdicname ?: ""),
+                ContractDetailsData(title = "初始保证金",content = data.margin ?: "")
+            )
+            unSubmitAdapter.setNewData(datalist)
+
+//            scrollView {
+//                verticalLayout {
+//                    contentItem(itemTile = ViewEnumUtils.getContractType(data.contracttype ?: "") + "-" + ViewEnumUtils.getPriceType(data.pricetype ?: "") + "合同",itemContent = data.contractno?.isBlankString() ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = if (data.contracttype == "1") { "销售方" }else{ "采购方" } ,itemContent = if (data.contracttype == "1") { data.sellusername ?: "" }else{ data.buyusername ?: "" })
+//                    viewItemUI()
+//                    contentItem(itemTile = "现货品种",itemContent = data.deliverygoodsname ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "产品类型",itemContent = ViewEnumUtils.getProductType(data.producttype ?: ""))
+//                    viewItemUI()
+//                    contentItem(itemTile = "产品规格",itemContent = data.spotgoodsdesc ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "定价类型",itemContent = ViewEnumUtils.getPriceType(data.pricetype ?: ""))
+//                    viewItemUI()
+//                    contentItem(itemTile = "期货合约",itemContent = data.goodsname ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "升贴水",itemContent = data.pricemove ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "标仓系数",itemContent = data.convertfactor ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "点价期",itemContent = data.startdate?.isShowTimeString("MM-dd") + "~" + data.enddate?.isShowTimeString("MM-dd"))
+//                    viewItemUI()
+//                    contentItem(itemTile = "点价期",itemContent = data.deliverystartdate?.isShowTimeString("MM-dd") + "~" + data.deliveryenddate?.isShowTimeString("MM-dd"))
+//                    viewItemUI()
+//                    contentItem(itemTile = "合同量",itemContent = data.qty ?: "" + data.enumdicname ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "初始保证金",itemContent = data.margin ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "初始保证金",itemContent = data.margin ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "初始保证金",itemContent = data.margin ?: "")
+//                    viewItemUI()
+//                    contentItem(itemTile = "初始保证金",itemContent = data.margin ?: "")
+//                }
+//            }.lparams(matchParent, matchParent)
+        }.lparams(matchParent, matchParent)
     }
 }
 //合同详情的item

+ 12 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/procurement/data/ContractDetailsData.kt

@@ -0,0 +1,12 @@
+package cn.muchinfo.rma.view.base.procurement.data
+
+/**
+ * 用于合同详情第一个tab的合同详情显示
+ * @property title String
+ * @property content String
+ * @constructor
+ */
+data class ContractDetailsData(
+    val title : String = "",
+    val content : String = ""
+)

+ 47 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/procurement/detailsviewholder/ContractDetailsViewHolder.kt

@@ -0,0 +1,47 @@
+package cn.muchinfo.rma.view.base.procurement.detailsviewholder
+
+import android.view.Gravity
+import androidx.appcompat.app.AppCompatActivity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.autoSize
+import cn.muchinfo.rma.view.autoWidget.textColorInt
+import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+import cn.muchinfo.rma.view.base.procurement.data.ContractDetailsData
+import mtp.polymer.com.autowidget.adapter.BaseViewHolder
+import org.jetbrains.anko.*
+
+class ContractDetailsViewHolder(private val activity : AppCompatActivity) : BaseViewHolder<ContractDetailsData>(activity){
+    override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
+
+    override fun _FrameLayout.createContentView() {
+        linearLayout {
+            gravity = Gravity.CENTER_VERTICAL
+            background = resources.getDrawable(R.color.white)
+            linearLayout {
+                gravity = Gravity.CENTER_VERTICAL
+                textView {
+                    data.bindOptional(context){
+                        text = it?.title
+                    }
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_gray_color
+                }.lparams(wrapContent, wrapContent){
+                    marginStart = autoSize(35)
+                }
+            }.lparams(autoSize(250), autoSize(120))
+
+            textView {
+                data.bindOptional(context){
+                    text = it?.content
+                }
+                textSizeAuto = 31
+                textColorInt = R.color.rma_black_33
+            }.lparams(wrapContent, wrapContent){
+                marginStart = autoSize(35)
+            }
+
+        }.lparams(matchParent, autoSize(120))
+    }
+
+}

+ 52 - 0
RMA/app/src/main/res/layout/hold_item.xml

@@ -113,4 +113,56 @@
         style="@style/ListSummaryTextStyle"
         android:layout_height="wrap_content"/>
 
+    <!--   快捷反手  -->
+    <TextView
+        android:layout_width="wrap_content"
+        android:id="@+id/quick_backhand"
+        android:text="快捷反手"
+        style="@style/ListBottomStyle"
+        android:layout_marginEnd="10dp"
+        android:visibility="visible"
+        app:layout_goneMarginEnd="0dp"
+        app:layout_constraintTop_toBottomOf="@+id/id_margin"
+        app:layout_constraintEnd_toStartOf="@+id/key_positions"
+        android:layout_height="wrap_content"/>
+
+    <!--   一键平仓  -->
+    <TextView
+        android:layout_width="wrap_content"
+        android:id="@+id/key_positions"
+        android:text="一键平仓"
+        style="@style/ListBottomStyle"
+        android:layout_marginEnd="10dp"
+        android:visibility="visible"
+        app:layout_goneMarginEnd="0dp"
+        app:layout_constraintTop_toBottomOf="@+id/id_margin"
+        app:layout_constraintEnd_toStartOf="@+id/id_chart"
+        android:layout_height="wrap_content"/>
+
+    <!--    图表-->
+    <TextView
+        android:layout_width="wrap_content"
+        android:id="@+id/id_chart"
+        android:text="@string/str_chart"
+        style="@style/ListBottomStyle"
+        android:layout_marginEnd="10dp"
+        android:visibility="visible"
+        app:layout_goneMarginEnd="0dp"
+        app:layout_constraintTop_toBottomOf="@+id/id_margin"
+        app:layout_constraintEnd_toStartOf="@+id/id_entrust_detail"
+        android:layout_height="wrap_content"/>
+
+    <!--  详情  -->
+    <TextView
+        android:layout_width="wrap_content"
+        android:id="@+id/id_entrust_detail"
+        android:text="@string/details"
+        android:visibility="visible"
+        app:layout_constraintEnd_toEndOf="parent"
+        style="@style/ListBottomStyle"
+        app:layout_constraintTop_toBottomOf="@+id/id_margin"
+        android:layout_marginEnd="10dp"
+        app:layout_goneMarginEnd="0dp"
+        android:layout_height="wrap_content"/>
+
 </androidx.constraintlayout.widget.ConstraintLayout>