Explorar o código

Merge remote-tracking branch 'origin/master'

jieyu %!s(int64=4) %!d(string=hai) anos
pai
achega
f1a090b880
Modificáronse 26 ficheiros con 800 adicións e 90 borrados
  1. 2 0
      RMA/app/src/main/AndroidManifest.xml
  2. 2 3
      RMA/app/src/main/java/cn/muchinfo/rma/business/future/FutureManager.kt
  3. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/future/adapter/FutureAdapter.kt
  4. 4 5
      RMA/app/src/main/java/cn/muchinfo/rma/global/ViewEnumUtils.kt
  5. 3 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/futureOrders/DealOrderData.kt
  6. 95 9
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/futureOrders/FutureHoldData.kt
  7. 2 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainActivity.kt
  8. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainViewModel.kt
  9. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/MyApplication.kt
  10. 2 5
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  11. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/FutureFragment.kt
  12. 14 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/deals/DealViewModel.kt
  13. 7 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustChildViewModel.kt
  14. 272 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldDetailsActivity.kt
  15. 59 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldDetailsViewHolder.kt
  16. 189 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldDetailsViewModel.kt
  17. 21 11
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/holds/HoldViewModel.kt
  18. 0 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/trade/GoodsTradeViewModel.kt
  19. 7 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/HomeFragment.kt
  20. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractDataViewHolder.kt
  21. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanActivity.kt
  22. 18 10
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/tradingquery/MoneyFlowingViewHolder.kt
  23. 19 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/tradingquery/TradingQueryActivity.kt
  24. 12 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/tradingquery/TradingQueryViewModel.kt
  25. 34 24
      RMA/app/src/main/res/layout/deal_fragment.xml
  26. 29 0
      RMA/app/src/main/res/layout/item_fresco_2.xml

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

@@ -181,6 +181,8 @@
         <activity android:name="mtp.polymer.com.information_management.hnstocks.message.MessageDetailsActivity"/>
 
         <activity android:name=".view.base.home.set.SettingActivity"/>
+
+        <activity android:name=".view.base.future.holds.HoldDetailsActivity"/>
     </application>
 
 </manifest>

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

@@ -300,7 +300,6 @@ class FutureManager {
 
 
     /**
-     *
      * 获取企业风管期货成交单信息
      * @param params Map<String, String> accountID/资金账户ID goodsID/商品ID buyOrSell/买卖方向,0:买 1:卖
      * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<FutureDetailsData>?, [@kotlin.ParameterName] Error?, Unit>
@@ -440,10 +439,10 @@ class FutureManager {
 
         tradeSocketManager.send(
             reqPacket,
-            FunCode.ChannelOrderRsp,
+            FunCode.CANCELORDERRSP,
             object : Callback<Packet50> {
                 override fun onSuccess(rsp: Packet50?) {
-                    val rst = FutureAdapter.analysisChannelOrderRsq(rsp!!)
+                    val rst = FutureAdapter.analysisCancelOrderRsq(rsp!!)
                     callback(rst.first, rst.second)
                 }
 

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

@@ -114,7 +114,7 @@ object FutureAdapter {
 
         val arrayOutputStream = ByteArrayOutputStream();
         builder.build().writeTo(arrayOutputStream)
-        return Packet50(FunCode.ChannelOrderReq, arrayOutputStream.toByteArray())
+        return Packet50(FunCode.CANCELORDERREQ, arrayOutputStream.toByteArray())
     }
 
     /**

+ 4 - 5
RMA/app/src/main/java/cn/muchinfo/rma/global/ViewEnumUtils.kt

@@ -156,18 +156,17 @@ object ViewEnumUtils {
         var str = ""
         if (buyOrSell == "0"){
             if (channelbuildtype == "1"){
-                str = "买"
+                str = "买入开仓"
             }else{
-                str = "买"
+                str = "买入平仓"
             }
         }else{
             if (channelbuildtype == "1"){
-                str = "卖"
+                str = "卖出开仓"
             }else{
-                str = "卖"
+                str = "卖出平仓"
             }
         }
-
         return str
     }
 

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

@@ -18,6 +18,7 @@ data class DealOrderData(
     val goodsname: String? = "",//商品名称
     val marketid: String? = "",//市场ID
     val openfreezemargin: String? = "",//冻结保证金(冻结交易金额)
+    val orderlogincode : String? = "",//委托人
 
     val orderid: String? = "",//委托单号(107+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
     val orderprice: String? = "",//委托价格(账户)
@@ -53,6 +54,7 @@ data class DealOrderData(
         parcel.readString(),
         parcel.readString(),
         parcel.readString(),
+        parcel.readString(),
         parcel.readByte() != 0.toByte()
     ) {
     }
@@ -71,6 +73,7 @@ data class DealOrderData(
         parcel.writeString(goodsname)
         parcel.writeString(marketid)
         parcel.writeString(openfreezemargin)
+        parcel.writeString(orderlogincode)
         parcel.writeString(orderid)
         parcel.writeString(orderprice)
         parcel.writeString(orderqty)

+ 95 - 9
RMA/app/src/main/java/cn/muchinfo/rma/global/data/futureOrders/FutureHoldData.kt

@@ -1,5 +1,7 @@
 package cn.muchinfo.rma.global.data.futureOrders
 
+import android.os.Parcel
+import android.os.Parcelable
 import cn.muchinfo.rma.global.GlobalDataCollection
 
 data class FutureHoldData(
@@ -10,23 +12,49 @@ data class FutureHoldData(
     var curtdpositionenabled: Int = 0, // 今仓可用
     var decimalplace: Int = 0, // 报价小数位
     var enableqty: Int = 0, // 可用(总仓可用)
-    var exexchangename: String = "", // 外部交易所名称
-    var goodscode: String = "", // 商品代码(内部)
+    var exexchangename: String? = "", // 外部交易所名称
+    var goodscode: String? = "", // 商品代码(内部)
     var goodsid: Int = 0, // 商品ID(自增ID SEQ_GOODS)
-    var goodsname: String = "", // 商品名称
+    var goodsname: String? = "", // 商品名称
     var last: Double = 0.0, // 现价
     var marketid: Int = 0, // 所属市场ID
     var openaverageprice: Double = 0.0, // 开仓均价【头寸变化更新】 = 开仓成本 / 期末头寸 / 合约单位
     var opencost: Double = 0.0, // 开仓成本
     var openpl: Double = 0.0, // 逐笔浮盈【实时行情更新】(MTP:开仓盈亏、平仓盈亏) 买方向 = (最新价 - 开仓均价) * 买期末头寸 * 合约单位;卖方向 = (开仓均价 - 最新价) * 卖期末头寸 * 合约单位
-    var outgoodscode: String = "", // 商品代码(外部)
+    var outgoodscode: String? = "", // 商品代码(外部)
     var positionaverageprice: Double = 0.0, // 持仓均价【头寸变化更新】= 持仓成本 / 期末头寸 / 合约单位
     var positioncost: Double = 0.0, // 持仓成本
     var positionpl: Double = 0.0, // 盯市浮盈【实时行情更新】(MTP:浮动盈亏、持仓盈亏) 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位;卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
     var positionplrate: Double = 0.0, // 持仓盈亏比例【实时行情更新】 = 持仓盈亏 / 开仓成本
     var usedmargin: Double = 0.0, // 占用保证金
     var selected: Boolean = false
-){
+) : Parcelable {
+
+    constructor(parcel: Parcel) : this(
+        parcel.readDouble(),
+        parcel.readInt(),
+        parcel.readInt(),
+        parcel.readInt(),
+        parcel.readInt(),
+        parcel.readInt(),
+        parcel.readInt(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readInt(),
+        parcel.readString(),
+        parcel.readDouble(),
+        parcel.readInt(),
+        parcel.readDouble(),
+        parcel.readDouble(),
+        parcel.readDouble(),
+        parcel.readString(),
+        parcel.readDouble(),
+        parcel.readDouble(),
+        parcel.readDouble(),
+        parcel.readDouble(),
+        parcel.readDouble(),
+        parcel.readByte() != 0.toByte()
+    )
 
     /**
      * 计算盈亏
@@ -36,20 +64,78 @@ data class FutureHoldData(
         if (quoteData != null){
             /** 计算持仓浮动盈亏/盯市浮盈 **/
             if (buyorsell == 0){//买
-                positionpl = quoteData.last.minus(positionaverageprice).times(curpositionqty).times(agreeunit)
+                positionpl = if (quoteData.last == 0.0){
+                    quoteData.preclose.minus(positionaverageprice).times(curpositionqty).times(agreeunit)
+                }else{
+                    quoteData.last.minus(positionaverageprice).times(curpositionqty).times(agreeunit)
+                }
             }else if (buyorsell == 1){
-                positionpl = positionaverageprice.minus(quoteData.last).times(curpositionqty).times(agreeunit)
+                positionpl = if (quoteData.last == 0.0){
+                    positionaverageprice.minus(quoteData.preclose).times(curpositionqty).times(agreeunit)
+                }else{
+                    positionaverageprice.minus(quoteData.last).times(curpositionqty).times(agreeunit)
+                }
+
             }
 
             /** 逐笔浮盈/平仓浮动盈亏 **/
             if (buyorsell == 0){
-                openpl = quoteData.last.minus(openaverageprice).times(curpositionqty).times(agreeunit)
+                if (quoteData.last == 0.0){
+                    openpl = quoteData.preclose.minus(openaverageprice).times(curpositionqty).times(agreeunit)
+                }else{
+                    openpl = quoteData.last.minus(openaverageprice).times(curpositionqty).times(agreeunit)
+                }
+
             }else if (buyorsell == 1){
-                openpl = openaverageprice.minus(quoteData.last).times(curpositionqty).times(agreeunit)
+                if (quoteData.last == 0.0){
+                    openpl = openaverageprice.minus(quoteData.preclose).times(curpositionqty).times(agreeunit)
+                }else{
+                    openpl = openaverageprice.minus(quoteData.last).times(curpositionqty).times(agreeunit)
+                }
             }
 
             positionplrate = positionpl.div(opencost)
         }
     }
 
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeDouble(agreeunit)
+        parcel.writeInt(buyorsell)
+        parcel.writeInt(curpositionqty)
+        parcel.writeInt(curtdposition)
+        parcel.writeInt(curtdpositionenabled)
+        parcel.writeInt(decimalplace)
+        parcel.writeInt(enableqty)
+        parcel.writeString(exexchangename)
+        parcel.writeString(goodscode)
+        parcel.writeInt(goodsid)
+        parcel.writeString(goodsname)
+        parcel.writeDouble(last)
+        parcel.writeInt(marketid)
+        parcel.writeDouble(openaverageprice)
+        parcel.writeDouble(opencost)
+        parcel.writeDouble(openpl)
+        parcel.writeString(outgoodscode)
+        parcel.writeDouble(positionaverageprice)
+        parcel.writeDouble(positioncost)
+        parcel.writeDouble(positionpl)
+        parcel.writeDouble(positionplrate)
+        parcel.writeDouble(usedmargin)
+        parcel.writeByte(if (selected) 1 else 0)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<FutureHoldData> {
+        override fun createFromParcel(parcel: Parcel): FutureHoldData {
+            return FutureHoldData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<FutureHoldData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
 }

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

@@ -153,6 +153,8 @@ class MainActivity : BaseActivity<MainViewModel>() {
                                 exposureFragment.reFresh()
                             }else if (position == 3){
                                 futureFragment.refrashAccount()
+                            }else if (position == 0){
+                                homeFragment.refrashAccount()
                             }
 
                             return false

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

@@ -138,7 +138,7 @@ class MainViewModel : BaseViewModel() {
 
                             MyApplication.getInstance()?.quoteManager?.addSubscriptQuote(
                                 "11111",
-                                futureHoldDatas!!.map { it.outgoodscode }.toSet()
+                                futureHoldDatas!!.map { it.outgoodscode ?: "" }.toSet()
                             ) { isCompleted, err ->
 
                             }

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

@@ -330,6 +330,7 @@ class MyApplication : BaseApplication() {
                 }
                 FunCode.CustOfflineNtf -> { // 用户离线通知,交易接入异常时下发
                     // TODO: - 加登出提示
+                    LogUtils.eTag("RAM_RC", String.format(" 用户离线通知:%d", FunCode.CustOfflineNtf))
                     exitApp()
                 }
             }

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

@@ -1,9 +1,6 @@
 package cn.muchinfo.rma.view.base.app
 
-/**
- *   @auther : Aleyn
- *   time   : 2019/08/16
- */
+
 object Constant {
 
     /**
@@ -13,7 +10,7 @@ object Constant {
 //    const val baseurl = "http://192.168.30.125:8080/cfg?key=test_125"
 //    const val baseurl = "http://192.168.31.114:8080/cfg?key=test_114" // shenzhen01  123123
       const val baseurl = "http://192.168.31.220:8080/cfg?key=test_220"//李倩
-//      const val baseurl = "http://192.168.30.211:8080/cfg?key=test_211"// 瑶姐
+      const val baseurl = "http://192.168.30.211:8080/cfg?key=test_211"// 瑶姐
 
     /**
      * 用sp存储基础url的key

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

@@ -175,6 +175,7 @@ class FutureFragment : BaseFragment<FutureViewModel>() {
             (context as AppCompatActivity).creatSelectAccountDialog {
                 EventBus.getDefault()
                     .post(MessageEvent(EventConstent.USERACCOUNTCHANGE))
+                viewModel.usedAccountData.postValue(this)
             }.show()
         }
 

+ 14 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/deals/DealViewModel.kt

@@ -10,13 +10,11 @@ import android.widget.TextView
 import androidx.lifecycle.MutableLiveData
 import androidx.recyclerview.widget.RecyclerView
 import cn.muchinfo.rma.R
-import cn.muchinfo.rma.global.GlobalDataCollection
-import cn.muchinfo.rma.global.channelbuildtype
+import cn.muchinfo.rma.global.*
 import cn.muchinfo.rma.global.data.futureOrders.DealOrderData
 import cn.muchinfo.rma.global.data.futureOrders.FutureHoldData
-import cn.muchinfo.rma.global.isBlankString
-import cn.muchinfo.rma.global.toShowTime
 import cn.muchinfo.rma.view.MyApplication
+import cn.muchinfo.rma.view.autoWidget.textColorInt
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
 import cn.muchinfo.rma.view.base.BaseViewModel
 import cn.muchinfo.rma.view.base.future.interfaces.OnItemClickListener
@@ -79,20 +77,29 @@ class DealViewModel : BaseViewModel() {
 
             var idChart = itemView?.findViewById<TextView>(R.id.id_chart)
             var idEntrustDetail = itemView?.findViewById<TextView>(R.id.id_deal_detail)
+
+            var id_deal_name = itemView?.findViewById<TextView>(R.id.id_deal_name)
         }
 
         override fun onBindViewHolder(holder: DealHolder, position: Int) {
             holder.itemView.tag = list?.get(position)
 
             holder.idGoodsName?.text = list?.get(position)?.goodsname
-            holder.idTransType?.text = list?.get(position)?.channelbuildtype.toString().channelbuildtype()
+            holder.idTransType?.text = ViewEnumUtils.getDealOrderType(list?.get(position)?.buyorsell ?: "",list?.get(position)?.channelbuildtype ?: "")
             holder.idDealNum?.text = list?.get(position)?.tradeqty.toString().isBlankString()
             holder.idDealPrice?.text = NumberUtils.roundNum(list?.get(position)?.tradeprice.toString(),2)
             holder.idDealTime?.text = list?.get(position)?.tradetime?.toShowTime("HH:mm:ss")
-
+            holder.id_deal_name?.text = list?.get(position)?.orderlogincode?.isBlankString()
             // 下面三个按钮的点击事件
             holder.idChart?.tag = list?.get(position)
             holder.idEntrustDetail?.tag = list?.get(position)
+
+            if (list?.get(position)?.buyorsell == "0"){
+                holder.idTransType?.setTextColor(priceRed)
+            }else{
+                holder.idTransType?.setTextColor(priceGreen)
+            }
+
             holder.idChart?.setOnClickListener {
 
             }
@@ -129,7 +136,7 @@ class DealViewModel : BaseViewModel() {
 
             // 选择
             list?.forEach { itemValue ->
-                if (itemValue.goodsid == currentDealData?.goodsid) {
+                if (itemValue.orderid == currentDealData?.orderid) {
                     if (itemValue.channelbuildtype == currentDealData?.channelbuildtype){
                         itemValue.select = !itemValue.select
                     }else{

+ 7 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/entrusts/EntrustChildViewModel.kt

@@ -126,6 +126,7 @@ class EntrustChildViewModel : BaseViewModel() {
             entrust.idEntrustDetail?.setOnClickListener {
 
             }
+
             entrust.idCancel?.setOnClickListener {
                 fragment?.createWarningDialog {
                     setTitle("温馨提示")
@@ -156,7 +157,12 @@ class EntrustChildViewModel : BaseViewModel() {
             if (list?.get(position)?.selected == true) {
                 entrust.idChart?.visibility = View.VISIBLE
                 entrust.idEntrustDetail?.visibility = View.VISIBLE
-                entrust.idCancel?.visibility = View.VISIBLE
+                if (type1 == CustomerEnums.EntrustType.TODAY_CANCEL_TYPE){
+                    entrust.idCancel?.visibility = View.VISIBLE
+                }else{
+                    entrust.idCancel?.visibility = View.GONE
+                }
+
                 entrust.itemView.backgroundColor = selectedColor
             } else if(list?.get(position)?.selected == false) {
                 entrust.idChart?.visibility = View.GONE

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

@@ -0,0 +1,272 @@
+package cn.muchinfo.rma.view.base.future.holds
+
+import android.os.Bundle
+import android.view.Gravity
+import android.view.View
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.futureOrders.DealOrderData
+import cn.muchinfo.rma.global.data.futureOrders.FutureHoldData
+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.BaseActivity
+import cn.muchinfo.rma.view.base.future.trade.itemView
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import mtp.polymer.com.autowidget.adapter.BaseAdapter
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.dialog.createWarningDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
+import org.jetbrains.anko.*
+
+class HoldDetailsActivity : BaseActivity<HoldDetailsViewModel>() {
+
+    /** 用于订阅行情的唯一标识 */
+    val thisTag by lazy {
+        "goodtradeorderHoldDetails"
+    }
+
+    private val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
+
+    val data: FutureHoldData by lazy {
+        intent.getParcelableExtra<FutureHoldData>("data") as FutureHoldData
+    }
+
+    val lifeData : MutableLiveData<FutureHoldData> = MutableLiveData()
+
+    private val holdDetailsAdapter: BaseAdapter<DealOrderData, HoldDetailsViewHolder> =
+        BaseAdapter { _, _ -> HoldDetailsViewHolder(this) }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+        verticalLayout {
+            viewModel.queryHedgeTradeDetails(data.goodsid, data.buyorsell)
+            dialog.bindTaskStatus(context,viewModel.loadingDialogStatus)
+            viewModel.queryQuoteDay(tag = thisTag,goodsCodes = data.outgoodscode ?: ""){
+                data.calculate()
+                lifeData.postValue(data)
+            }
+
+            topBar {
+                commonLeftButton()
+                commonTitle {
+                    text = "订单详情(持仓)"
+                }
+            }
+
+            frameLayout {
+                nestedScrollView {
+                    verticalLayout {
+                        HoldDetailsItemView(
+                            itemTitle = "合约名称",
+                            itemContent = data.goodsname ?: "--"
+                        )
+                        itemView()
+                        HoldDetailsItemView(
+                            itemTitle = "今仓/总仓数量",
+                            itemContent = data.curtdposition.toString() + "/" + data.curpositionqty
+                        )
+                        itemView()
+                        HoldDetailsItemView(
+                            itemTitle = "今仓/总仓可用",
+                            itemContent = data.curtdposition.toString() + "/" + data.enableqty
+                        )
+                        itemView()
+                        HoldDetailsItemView(
+                            itemTitle = "开仓均价(CNY)",
+                            itemContent = data.openaverageprice.toString()
+                        )
+                        itemView()
+                        HoldDetailsItemView(
+                            itemTitle = "持仓均价(CNY)",
+                            itemContent = data.positionaverageprice.toString()
+                        )
+                        itemView()
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "逐笔浮盈(CNY)"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_hint_title_text_color
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(36)
+                            }
+
+                            emptyView()
+
+                            textView {
+                                lifeData.bindOptional(context){
+                                    if (it?.openpl ?: 0.0 < 0) {
+                                        textColorInt = R.color.rma_green_color
+                                    } else if (it?.openpl ?: 0.0 > 0) {
+                                        textColorInt = R.color.rma_red_color
+                                    } else {
+                                        textColorInt = R.color.rma_black_33
+                                    }
+                                    text = NumberUtils.roundNum(it?.openpl?.toString(),2)
+                                }
+                                if (data.openpl < 0) {
+                                    textColorInt = R.color.rma_green_color
+                                } else if (data.openpl > 0) {
+                                    textColorInt = R.color.rma_red_color
+                                } else {
+                                    textColorInt = R.color.rma_black_33
+                                }
+                                text = NumberUtils.roundNum(data.openpl.toString(),2)
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginEnd = autoSize(36)
+                            }
+                        }.lparams(matchParent, autoSize(90))
+                        itemView()
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                text = "盯市浮盈(CNY)"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_hint_title_text_color
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(36)
+                            }
+
+                            emptyView()
+
+                            textView {
+                                lifeData.bindOptional(context){
+                                    if (it?.positionpl ?: 0.0 < 0) {
+                                        textColorInt = R.color.rma_green_color
+                                    } else if (it?.positionpl ?: 0.0 > 0) {
+                                        textColorInt = R.color.rma_red_color
+                                    } else {
+                                        textColorInt = R.color.rma_black_33
+                                    }
+                                    text = NumberUtils.roundNum(it?.positionpl?.toString(),2)
+                                }
+                                if (data.positionpl < 0) {
+                                    textColorInt = R.color.rma_green_color
+                                } else if (data.positionpl > 0) {
+                                    textColorInt = R.color.rma_red_color
+                                } else {
+                                    textColorInt = R.color.rma_black_33
+                                }
+                                text = NumberUtils.roundNum(data.positionpl.toString(),2)
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginEnd = autoSize(36)
+                            }
+                        }.lparams(matchParent, autoSize(90))
+                        itemView()
+                        HoldDetailsItemView(
+                            itemTitle = "交易所",
+                            itemContent = data.exexchangename ?: "--"
+                        )
+
+                        linearLayout {
+                            gravity = Gravity.CENTER_VERTICAL
+                            textView {
+                                gravity = Gravity.CENTER
+                                text = "成交时间"
+                                textColorInt = R.color.rma_black_33
+                                textSizeAuto = 30
+                            }.lparams(0, wrapContent, 1f)
+
+                            textView {
+                                gravity = Gravity.CENTER
+                                text = "成交数量"
+                                textColorInt = R.color.rma_black_33
+                                textSizeAuto = 30
+                            }.lparams(0, wrapContent, 1f)
+
+                            textView {
+                                gravity = Gravity.CENTER
+                                text = "成交价格(CNY)"
+                                textColorInt = R.color.rma_black_33
+                                textSizeAuto = 30
+                            }.lparams(0, wrapContent, 1f)
+                        }.lparams(matchParent, autoSize(90))
+
+                        recyclerView {
+                            background = resources.getDrawable(R.color.white)
+                            adapter = holdDetailsAdapter
+                            isNestedScrollingEnabled = false
+                        }.lparams(matchParent, wrapContent)
+
+                        viewModel.dealOrderList.bindOptional(context) {
+                            holdDetailsAdapter.setNewData(it)
+                        }
+
+                    }
+                }
+
+                linearLayout {
+                    background = resources.getDrawable(R.color.white)
+                    gravity = Gravity.CENTER_VERTICAL
+                    if (data.enableqty > 0) {
+                        visibility = View.VISIBLE
+                    } else {
+                        visibility = View.GONE
+                    }
+
+                    textView {
+                        onThrottleFirstClick {
+                            createWarningDialog {
+                                setTitle("平仓")
+                                setMessage("确认对此持仓单进行平仓操作吗?")
+                                addAction("取消") { dialog, _ -> dialog.dismiss() }
+                                addAction("确定") { dialog, _ ->
+                                    viewModel.commitDealData(data, true){
+                                        finish()
+                                    }
+                                    dialog.dismiss()
+                                }
+                            }.show()
+
+                        }
+                        gravity = Gravity.CENTER
+                        backgroundResource = R.mipmap.rma_submit_bg
+                        text = "平仓"
+                        textColorInt = R.color.white
+                        textSizeAuto = 38
+                    }.lparams(matchParent, autoSize(119)) {
+                        marginStart = autoSize(59)
+                        marginEnd = autoSize(59)
+                    }
+                }.lparams(matchParent, autoSize(144)) {
+                    gravity = Gravity.BOTTOM
+                }
+            }.lparams(matchParent, matchParent)
+
+        }
+
+    }
+
+}
+
+fun _LinearLayout.HoldDetailsItemView(itemTitle: String, itemContent: String) {
+
+    linearLayout {
+        background = resources.getDrawable(R.color.white)
+        gravity = Gravity.CENTER_VERTICAL
+        textView {
+            text = itemTitle
+            textSizeAuto = 31
+            textColorInt = R.color.rma_hint_title_text_color
+        }.lparams(wrapContent, wrapContent) {
+            marginStart = autoSize(36)
+        }
+
+        emptyView()
+
+        textView {
+            text = itemContent
+            textColorInt = R.color.rma_black_33
+            textSizeAuto = 31
+        }.lparams(wrapContent, wrapContent) {
+            marginEnd = autoSize(36)
+        }
+    }.lparams(matchParent, autoSize(90))
+
+}

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

@@ -0,0 +1,59 @@
+package cn.muchinfo.rma.view.base.future.holds
+
+import android.view.Gravity
+import androidx.appcompat.app.AppCompatActivity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.futureOrders.DealOrderData
+import cn.muchinfo.rma.global.toShowTime
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.autoSize
+import cn.muchinfo.rma.view.autoWidget.textColorInt
+import cn.muchinfo.rma.view.autoWidget.textSizeAuto
+import mtp.polymer.com.autowidget.adapter.BaseViewHolder
+import org.jetbrains.anko.*
+
+/**
+ * 持仓单详情的成交列表
+ * @property activity AppCompatActivity
+ * @property itemSize IntArray
+ * @constructor
+ */
+class HoldDetailsViewHolder(private val activity : AppCompatActivity) : BaseViewHolder<DealOrderData>(activity){
+    override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
+
+    override fun _FrameLayout.createContentView() {
+        linearLayout {
+            gravity = Gravity.CENTER_VERTICAL
+            // text = "成交时间"
+            textView {
+                gravity = Gravity.CENTER
+                data.bindOptional(context){
+                    text = it?.tradetime?.toShowTime("MM-dd HH:mm:ss")
+                }
+                textColorInt = R.color.rma_black_33
+                textSizeAuto = 30
+            }.lparams(0, wrapContent,1f)
+
+            // text = "成交数量"
+            textView {
+                gravity = Gravity.CENTER
+                data.bindOptional(context){
+                    text = it?.tradeqty
+                }
+                textColorInt = R.color.rma_black_33
+                textSizeAuto = 30
+            }.lparams(0, wrapContent,1f)
+
+            //text = "成交价格(CNY)"
+            textView {
+                gravity = Gravity.CENTER
+                data.bindOptional(context){
+                    text = it?.tradeprice
+                }
+                textColorInt = R.color.rma_black_33
+                textSizeAuto = 30
+            }.lparams(0, wrapContent,1f)
+        }.lparams(matchParent, autoSize(90))
+    }
+
+}

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

@@ -0,0 +1,189 @@
+package cn.muchinfo.rma.view.base.future.holds
+
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.business.future.adapter.ChannelOrderReqData
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.futureOrders.DealOrderData
+import cn.muchinfo.rma.global.data.futureOrders.FutureHoldData
+import cn.muchinfo.rma.netManage.base.InteractiveException
+import cn.muchinfo.rma.view.MyApplication
+import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
+import cn.muchinfo.rma.view.base.BaseViewModel
+import cn.muchinfo.rma.view.base.app.FutureConstent
+import com.blankj.utilcode.util.TimeUtils
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
+import mtp.polymer.com.autowidget.utils.TaskUiModel
+
+class HoldDetailsViewModel : BaseViewModel(){
+
+
+    val dealOrderList : MutableLiveData<List<DealOrderData>> = MutableLiveData()
+
+    /**
+     * 数据初始化状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
+
+    /**
+     * 查询对应的成交单信息
+     */
+    fun queryHedgeTradeDetails(goodsID: Int, buyOrSell: Int) {
+        val params = mutableMapOf<String, String>()
+        params["accountID"] = GlobalDataCollection.instance?.accountId.toString()
+        params["goodsID"] = goodsID.toString()
+        params["buyOrSell"] = buyOrSell.toString()
+
+        MyApplication.getInstance()?.futureManager?.queryErmcpTradeDetails(params) { isSuccess, respData, _ ->
+            if (!isSuccess) {
+                return@queryErmcpTradeDetails
+            }
+
+            queryHedgeHisTradeDetails(goodsID,buyOrSell,respData ?: arrayListOf())
+        }
+    }
+
+
+    /**
+     * 查询对应的历史成交单信息
+     */
+    fun queryHedgeHisTradeDetails(goodsID: Int, buyOrSell: Int,relist : List<DealOrderData>) {
+        val params = mutableMapOf<String, String>()
+        params["accountID"] = GlobalDataCollection.instance?.accountId.toString()
+        params["goodsID"] = goodsID.toString()
+        params["buyOrSell"] = buyOrSell.toString()
+
+        MyApplication.getInstance()?.futureManager?.queryErmcpHisTradeDetails(params) { isSuccess, respData, _ ->
+            if (!isSuccess) {
+                return@queryErmcpHisTradeDetails
+            }
+
+            val newList = arrayListOf<DealOrderData>()
+            newList.addAll(relist)
+            newList.addAll(respData ?: arrayListOf())
+            dealOrderList.postValue(newList)
+
+        }
+    }
+
+    /**
+     * 请求盘面信息
+     * @param first Int
+     * @param last Int
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryQuoteDay(
+        tag : String,
+        goodsCodes: String ,
+        isSuccessQuery: (isCompleted: Boolean) -> Unit
+    ) {
+
+        val params = mutableMapOf<String, String>().apply {
+            put("goodsCodes", goodsCodes)
+        }
+        MyApplication.getInstance()?.futureManager?.queryQuoteDay(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                isSuccessQuery.invoke(true)
+            }
+        }
+//        addSubscriptQuote(tag = tag,goodsCodes = setOf(goodsCodes))
+    }
+
+    /**
+     * 操作请求
+     * @param isClose Boolean 是否是平仓单
+     */
+    fun commitDealData(itemData: FutureHoldData, isClose: Boolean,
+                       isSuccess: (isCompleted: Boolean) -> Unit) {
+        var tradePrice = 0.0 //交易价格
+        val datas = ChannelOrderReqData()
+        datas.setAccountID(GlobalDataCollection.instance?.accountId ?: 0) // 交易账号
+        val goodsQuote = GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find {
+            it.outgoodscode == itemData.outgoodscode
+        }
+        if (isClose) {
+            if (itemData.buyorsell == 0) {
+                //平仓---平买单,方向是卖
+                datas.setBuyOrSell(1)
+            } else {
+                //平仓---平卖单,方向是买
+                datas.setBuyOrSell(0)
+            }
+        } else {
+            if (itemData.buyorsell == 0) {
+                //平仓---平买单,方向是卖
+                datas.setBuyOrSell(1)
+            } else {
+                //平仓---平卖单,方向是买
+                datas.setBuyOrSell(0)
+            }
+        }
+
+        datas.clientOrderTime = TimeUtils.getNowString() // 客户端委托时间  当前时间
+        datas.clientType = 3 // 客户端类型: 1客户端  3 手机端 android
+        datas.goodsID = itemData.goodsid ?: 0//商品id
+        datas.loginID = GlobalDataCollection.instance?.loginRsp?.loginID ?: 0 //登录账号
+
+        datas.marketID = itemData.marketid ?: 0
+        datas.validType = 1 // 有效类型-1当日有效
+        datas.channelOperateType =
+            FutureConstent.ChannelOperateType_ORDER // 操作类型  1:正常类型  默认写死???
+        datas.channelOrderSrc = 1 // 单据来源委托来源-1:客户端  //默认写死?
+        datas.hedgeFlag = 0 // 投机套保标志-0:无
+        if (goodsQuote?.quoteDayData != null) {
+            val decial = goodsQuote.goodsInfo.decimalplace
+            val setp: Double
+            setp = goodsQuote.goodsInfo.quoteminunit * Math.pow(
+                10.0,
+                -decial.toDouble()
+            )
+            val askLimitPrice: String =
+                NumberUtils.roundNum(goodsQuote.quoteDayData.ask + setp /*limitStep*/, decial)
+            val bidLimitPrice: String = NumberUtils.roundNum(
+                goodsQuote.quoteDayData.bid - setp /*limitStep*/, decial
+            )
+            if (itemData.buyorsell == 0) {
+                tradePrice = bidLimitPrice.toDouble()
+            } else {
+                tradePrice = askLimitPrice.toDouble()
+            }
+        }
+        datas.orderPrice = tradePrice
+        datas.orderQty = itemData.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.setTimeValidType(FutureConstent.ValidTypeEnum_VALIDTYPE_DR) // 时间有效类型   默认写死当日有效
+        datas.setRelatedID(0) // 关联单号 默认写死
+        datas.setServiceTime("") //服务端时间string
+        datas.setValidtime("") // 有效时间string
+
+        GlobalScope.launch {
+            MyApplication.getInstance()?.futureManager?.tradeRequest(data = datas) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.success(
+                            msg = "请求成功"
+                        )
+                    )
+                    isSuccess.invoke(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(errorMessage = err?.message!!)
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+}

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

@@ -1,6 +1,7 @@
 package cn.muchinfo.rma.view.base.future.holds
 
 import android.content.Context
+import android.content.Intent
 import android.graphics.drawable.Drawable
 import android.view.LayoutInflater
 import android.view.View
@@ -12,7 +13,6 @@ import androidx.recyclerview.widget.RecyclerView
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.business.future.adapter.ChannelOrderReqData
 import cn.muchinfo.rma.global.GlobalDataCollection
-import cn.muchinfo.rma.global.data.futureOrders.DealOrderData
 import cn.muchinfo.rma.global.data.futureOrders.FutureHoldData
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
@@ -24,6 +24,7 @@ import cn.muchinfo.rma.view.base.future.costs.OrderDetailData
 import cn.muchinfo.rma.view.base.future.orderDeatails.OrderDetail
 import cn.muchinfo.rma.view.eventbus.EventConstent
 import cn.muchinfo.rma.view.eventbus.TradeMessageEvent
+import com.blankj.utilcode.util.ActivityUtils
 import com.blankj.utilcode.util.TimeUtils
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
@@ -271,8 +272,8 @@ class HoldViewModel : BaseViewModel() {
             /** 一键平仓 **/
             holder.key_positions?.onThrottleFirstClick {
                 fragment?.createWarningDialog {
-                    setTitle("快捷反手确认")
-                    setMessage("确认将该合约的所有持仓进行快捷反手操作?")
+                    setTitle("一键平仓")
+                    setMessage("确认对此持仓单进行一键平仓吗?")
                     addAction("取消") { dialog, _ -> dialog.dismiss() }
                     addAction("确定") { dialog, _ ->
                         commitDealData(false, true)
@@ -290,15 +291,24 @@ class HoldViewModel : BaseViewModel() {
             /** 详情 **/
             holder.id_entrust_detail?.tag = itemData
             holder.id_entrust_detail?.onThrottleFirstClick {
+
+
+
                 val tagData = it?.tag as FutureHoldData
-                val data = makeCostInfo(tagData)
-                OrderDetail.start(
-                    context!!,
-                    data,
-                    context?.resources?.getString(R.string.str_order_detail_head),
-                    tagData.goodsid,
-                    tagData.buyorsell
-                )
+
+                val intent = Intent()
+                intent.putExtra("data",tagData)
+                intent.setClass(context!!,HoldDetailsActivity::class.java)
+                ActivityUtils.startActivity(intent)
+
+//                val data = makeCostInfo(tagData)
+//                OrderDetail.start(
+//                    context!!,
+//                    data,
+//                    context?.resources?.getString(R.string.str_order_detail_head),
+//                    tagData.goodsid,
+//                    tagData.buyorsell
+//                )
             }
 
             if (list?.get(position)?.selected == true) {

+ 0 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/trade/GoodsTradeViewModel.kt

@@ -4,9 +4,7 @@ import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.business.future.adapter.ChannelOrderReqData
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.AccountData
-import cn.muchinfo.rma.global.data.AccountShowData
 import cn.muchinfo.rma.global.data.QuoteDayData
-import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
 import cn.muchinfo.rma.global.data.futureOrders.FutureHoldData
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication

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

@@ -119,6 +119,13 @@ class HomeFragment : BaseFragment<HomeViewModel>() {
         }
     }
 
+    /**
+     * 用于切换首页tab时刷新资金账户信息
+     */
+    fun refrashAccount(){
+        viewModel.initAccountData()//初始化页面时进行一次资金账号的拿取
+    }
+
 
     @SuppressLint("SetTextI18n")
     override fun onCreateView(

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

@@ -266,7 +266,7 @@ class ContractDataViewHolder(
                     }
                     data.bindOptional(context) {
                         visibility = if (type == "1") {
-                            if (it?.contracctstatus == "1") {
+                            if (it?.contracctstatus == "1" || it?.contracctstatus == "0") {
                                 View.VISIBLE
                             } else {
                                 View.GONE
@@ -316,7 +316,7 @@ class ContractDataViewHolder(
                     }
                     data.bindOptional(context) {
                         visibility = if (type == "1") {
-                            if (it?.contracctstatus == "4") {
+                            if (it?.contracctstatus == "4" || it?.contracctstatus == "6") {
                                 View.VISIBLE
                             } else {
                                 View.GONE

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

@@ -192,7 +192,9 @@ class HedgePlanActivity : BaseActivity<HedgePlanViewModel>() {
             }.lparams(matchParent, autoSize(2000))
 
             indexSelect.bindOptional(context){
-                segment.selectTab(it ?:0)
+                if (it != -1){
+                    segment.selectTab(it ?:0)
+                }
             }
             segment.setupWithViewPager(viewPager)
             segment.selectTab(selectedTabIndex)

+ 18 - 10
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/tradingquery/MoneyFlowingViewHolder.kt

@@ -4,6 +4,7 @@ import android.view.Gravity
 import androidx.appcompat.app.AppCompatActivity
 import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.data.AmountLogData
+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
@@ -21,21 +22,23 @@ class MoneyFlowingViewHolder(
             verticalLayout {
                 gravity = Gravity.LEFT
                 textView {
-                    text = "PT789"
+                    data.bindOptional(context){
+                        text = viewModel.getTime(it?.createtime ?: "")
+                    }
                     textSizeAuto = 29
                     textColorInt = R.color.rma_black_33
-                }.lparams(wrapContent, wrapContent)
-                textView {
-                    text = "买多"
-                    textSizeAuto = 22
-                    textColorInt = R.color.rma_star_color
-                }.lparams(wrapContent, wrapContent)
+                }.lparams(wrapContent, wrapContent){
+                    topMargin = autoSize(20)
+                    marginStart = autoSize(36)
+                }
             }.lparams(autoSize(300), autoSize(100))
 
             verticalLayout {
                 gravity = Gravity.CENTER
                 textView {
-                    text = "手续费"
+                    data.bindOptional(context){
+                        text = it?.OPERATETYPENAME
+                    }
                     textSizeAuto = 29
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent)
@@ -45,10 +48,15 @@ class MoneyFlowingViewHolder(
             verticalLayout {
                 gravity = Gravity.RIGHT
                 textView {
-                    text = "-9000"
+
+                    data.bindOptional(context){
+                        text = it?.amount
+                    }
                     textSizeAuto = 29
                     textColorInt = R.color.rma_black_33
-                }.lparams(wrapContent, wrapContent)
+                }.lparams(wrapContent, wrapContent){
+                    marginEnd = autoSize(36)
+                }
             }.lparams(autoSize(300), autoSize(100))
         }.lparams(matchParent, autoSize(100))
     }

+ 19 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/tradingquery/TradingQueryActivity.kt

@@ -209,7 +209,9 @@ class HistoryCommissionedUI(
 
                     imageView {
                         imageResource = R.mipmap.rma_search_by_time
-                    }.lparams(autoSize(38), autoSize(38))
+                    }.lparams(autoSize(38), autoSize(38)){
+                        marginEnd = autoSize(20)
+                    }
 
                 }.lparams(autoSize(324), autoSize(67)) {
                     marginStart = autoSize(36)
@@ -234,7 +236,9 @@ class HistoryCommissionedUI(
 
                     imageView {
                         imageResource = R.mipmap.rma_search_by_time
-                    }.lparams(autoSize(38), autoSize(38))
+                    }.lparams(autoSize(38), autoSize(38)){
+                        marginEnd = autoSize(20)
+                    }
                 }.lparams(autoSize(324), autoSize(67)) {
                     marginStart = autoSize(12)
                 }
@@ -405,7 +409,9 @@ class HistoryDealUI(
 
                     imageView {
                         imageResource = R.mipmap.rma_search_by_time
-                    }.lparams(autoSize(38), autoSize(38))
+                    }.lparams(autoSize(38), autoSize(38)){
+                        marginEnd = autoSize(20)
+                    }
 
                 }.lparams(autoSize(324), autoSize(67)) {
                     marginStart = autoSize(36)
@@ -435,7 +441,9 @@ class HistoryDealUI(
 
                     imageView {
                         imageResource = R.mipmap.rma_search_by_time
-                    }.lparams(autoSize(38), autoSize(38))
+                    }.lparams(autoSize(38), autoSize(38)){
+                        marginEnd = autoSize(20)
+                    }
                 }.lparams(autoSize(324), autoSize(67)) {
                     marginStart = autoSize(12)
                 }
@@ -600,7 +608,9 @@ class MoneyFlowingUI(
 
                     imageView {
                         imageResource = R.mipmap.rma_search_by_time
-                    }.lparams(autoSize(38), autoSize(38))
+                    }.lparams(autoSize(38), autoSize(38)){
+                        marginEnd = autoSize(20)
+                    }
 
                 }.lparams(autoSize(324), autoSize(67)) {
                     marginStart = autoSize(36)
@@ -630,7 +640,9 @@ class MoneyFlowingUI(
 
                     imageView {
                         imageResource = R.mipmap.rma_search_by_time
-                    }.lparams(autoSize(38), autoSize(38))
+                    }.lparams(autoSize(38), autoSize(38)){
+                        marginEnd = autoSize(20)
+                    }
                 }.lparams(autoSize(324), autoSize(67)) {
                     marginStart = autoSize(12)
                 }
@@ -682,7 +694,7 @@ class MoneyFlowingUI(
                         textSizeAuto = 24
                         textColorInt = R.color.hint_text_color
                     }.lparams(wrapContent, wrapContent){
-                        marginStart = autoSize(36)
+                        marginEnd = autoSize(36)
                         topMargin = autoSize(30)
                     }
                 }.lparams(autoSize(300), autoSize(97))

+ 12 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/tradingquery/TradingQueryViewModel.kt

@@ -8,6 +8,8 @@ import cn.muchinfo.rma.global.data.futureOrders.DealOrderData
 import cn.muchinfo.rma.global.data.futureOrders.FutureEntrustData
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
+import java.text.SimpleDateFormat
+import java.util.*
 
 class TradingQueryViewModel : BaseViewModel(){
 
@@ -65,7 +67,7 @@ class TradingQueryViewModel : BaseViewModel(){
      */
     fun queryHisAmountLog(startDate : String = "",endDate : String = ""){
         val params = mutableMapOf<String, String>().apply {
-            put("accountID", GlobalDataCollection.instance?.loginRsp?.memberUserID.toString())
+            put("accountID", GlobalDataCollection.instance?.accountId.toString())
             if (startDate.isNotEmpty()){
                 put("startDate", startDate)
             }
@@ -130,6 +132,15 @@ class TradingQueryViewModel : BaseViewModel(){
 
     }
 
+    fun getTime(time : String): String {
+        if (time.isNullOrEmpty()){
+            return "--"
+        }
+        val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+08:00", Locale.CHINA)
+        val sdf1 = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+        return sdf1.format(sdf.parse(time)!!)
+    }
+
 
 
 }

+ 34 - 24
RMA/app/src/main/res/layout/deal_fragment.xml

@@ -1,46 +1,58 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="vertical">
 
 <!--    head-->
-    <androidx.constraintlayout.widget.ConstraintLayout
+
+    <LinearLayout
         android:layout_width="match_parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:id="@+id/id_head"
-        android:paddingStart="15dp"
-        android:paddingEnd="15dp"
-        android:layout_height="wrap_content">
+        android:orientation="horizontal"
+        android:layout_height="wrap_content"
+        tools:ignore="MissingConstraints" >
         <TextView
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
             android:id="@+id/id_name_type"
             android:text="@string/str_deal_name_type"
             style="@style/HoldHeadTextStyle"
-            android:layout_width="wrap_content"
+            android:layout_width="0dp"
+            android:gravity="center"
+            android:layout_weight="1"
             android:layout_height="wrap_content"/>
+
         <TextView
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
             android:id="@+id/id_deal_num_price"
             android:text="@string/str_deal_num_price"
             style="@style/HoldHeadTextStyle"
-            android:gravity="end"
+            android:gravity="center"
             app:layout_constraintEnd_toEndOf="parent"
-            android:layout_width="wrap_content"
+            android:layout_width="0dp"
+            android:layout_weight="1"
             android:layout_height="wrap_content"/>
+
         <TextView
-            app:layout_constraintTop_toTopOf="parent"
             android:id="@+id/id_deal_time"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintBottom_toBottomOf="parent"
             android:text="@string/str_deal_time"
             style="@style/HoldHeadTextStyle"
-            android:layout_width="wrap_content"
+            android:layout_width="0dp"
+            android:gravity="center"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"/>
+
+        <TextView
+            android:gravity="center"
+            android:id="@+id/id_principal"
+            android:text="委托人"
+            style="@style/HoldHeadTextStyle"
+            android:layout_width="0dp"
+            android:layout_weight="1"
             android:layout_height="wrap_content"/>
 
-    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    </LinearLayout>
+
     <include
         layout="@layout/line_view"
         android:id="@+id/line2"
@@ -52,8 +64,6 @@
     <androidx.recyclerview.widget.RecyclerView
         android:layout_width="match_parent"
         android:id="@+id/id_deal_list"
-        app:layout_constraintTop_toBottomOf="@+id/line2"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:layout_height="0dp"/>
+        android:layout_height="match_parent"/>
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</LinearLayout>

+ 29 - 0
RMA/app/src/main/res/layout/item_fresco_2.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.cardview.widget.CardView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="230dp"
+    app:cardBackgroundColor="@android:color/transparent">
+
+    <LinearLayout
+        android:background="@drawable/holder"
+        android:layout_width="match_parent"
+        android:orientation="vertical"
+        android:layout_height="240dp">
+        <TextView
+            android:id="@+id/aaaaaa_ahskdjah"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="哈哈哈哈"
+            android:textSize="20dp"/>
+
+        <TextView
+            android:id="@+id/aaaaaa_liubolan"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="哈哈哈哈"
+            android:textSize="20dp"/>
+    </LinearLayout>
+
+</androidx.cardview.widget.CardView>