Bladeren bron

风险管理4月21日提交代码-liu.bolan

Liu.bolan 4 jaren geleden
bovenliggende
commit
563e971398
15 gewijzigde bestanden met toevoegingen van 838 en 130 verwijderingen
  1. 31 3
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt
  2. 14 5
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/adapter/AccountAdapter.kt
  3. 28 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/future/FutureManager.kt
  4. 77 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/FuturesCompanyData.kt
  5. 59 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/TradeConfigTMPData.kt
  6. 4 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  7. 5 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerActivity.kt
  8. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerViewModel.kt
  9. 32 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/FutureManagerViewHolder.kt
  10. 21 12
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/FutureUserViewHolder.kt
  11. 70 37
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/AddFutureAccountActivity.kt
  12. 132 54
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/AddFutureSonAccountActivity.kt
  13. 313 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/FutureAccountViewModel.kt
  14. 41 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/FutureCreditActivity.kt
  15. 9 0
      RMA/app/src/main/res/drawable/ic_rma_change_img.xml

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

@@ -470,7 +470,7 @@ class AccountManager {
     }
 
     /**
-     * 查询账户管理角色详情(账户管理/角色设置/角色详情)
+     * 查询账户管理授信(账户管理/账户设置/授信)
      * @param params Map<String, String> userid 用户ID accountid 账号id
      * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<AccMgrRoleData>?, [@kotlin.ParameterName] Error?, Unit>
      */
@@ -526,6 +526,32 @@ class AccountManager {
     }
 
     /**
+     * 查询交易模板配置
+     * @param params Map<String, String> userid 用户ID
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] List<AccMgrRoleData>?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryTradeConfigTMP(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<TradeConfigTMPData>?, error: Error?) -> Unit
+    ) {
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/Ermcp/QueryTradeConfigTMP",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<TradeConfigTMPData>>>() {
+                override fun onResponse(response: BaseResult<List<TradeConfigTMPData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+            }
+        )
+    }
+
+    /**
      * 期货账户新增修改请求报文装箱
     optional MessageHead Header = 1; // MessageHead
     optional uint64 marketid = 2; // uint64 内部市场ID(HedgeOutMainConfig)
@@ -568,6 +594,7 @@ class AccountManager {
         tradefeetmpid: Long = 0,
         maxsubaccouts: Long = 0,
         fcid: Long = 0,
+        accountid : Long = 0,
         callback: (isCompleted: Boolean, err: Error?) -> Unit
     ) {
         val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
@@ -589,7 +616,8 @@ class AccountManager {
             trademargintmpid,
             tradefeetmpid,
             maxsubaccouts,
-            fcid
+            fcid,
+            accountid
         )
 
         tradeSocketManager.send(
@@ -705,7 +733,7 @@ class AccountManager {
     }
 
     /**
-     * 期货账户注销报文装箱
+     * 期货账户注销
      * @param accountid Long 期货账户ID
      * @return Packet50
      */

+ 14 - 5
RMA/app/src/main/java/cn/muchinfo/rma/business/account/adapter/AccountAdapter.kt

@@ -10,6 +10,7 @@ import cn.muchinfo.rma.protobuf.funcode.FunCode
 import cn.muchinfo.rma.protobuf.protoclasses.ErmcpMI1
 import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2
 import cn.muchinfo.rma.protobuf.protoclasses.SystemMI1
+import cn.muchinfo.rma.view.base.app.Constant
 import com.blankj.utilcode.util.LogUtils
 import com.google.protobuf.ByteString
 import java.io.ByteArrayOutputStream
@@ -37,7 +38,7 @@ class AccountAdapter {
                     .toLowerCase(Locale.ROOT)
             builder.loginType = 0
             builder.clientSystemInfo = ByteString.copyFrom(byteArray)
-            builder.clientAppID = "muchinfo_mtpclient_5.0.1"
+            builder.clientAppID = Constant.APPID
             builder.clientType = 3
             builder.version = BuildConfig.VERSION_NAME
             val uuid = UUID.randomUUID()
@@ -248,7 +249,8 @@ class AccountAdapter {
             trademargintmpid : Long = 0,
             tradefeetmpid : Long = 0,
             maxsubaccouts : Long = 0,
-            fcid : Long = 0
+            fcid : Long = 0,
+            accountid : Long = 0
         )  : Packet50{
             val builder = ManageServiceMI2.HedgeOutMainConfigReq.newBuilder()
             val loginInfo = GlobalDataCollection.instance?.loginRsp!!
@@ -265,19 +267,23 @@ class AccountAdapter {
             if (hedgeaccountcode.isNotEmpty()){
                 builder.hedgeaccountcode = hedgeaccountcode
             }
+//            builder.hedgeaccountcode = loginInfo.loginCode
             if (hedgeaccountpwd.isNotEmpty()){
                 builder.hedgeaccountpwd = hedgeaccountpwd
             }
-//        if (appid.isNotEmpty()){
-//            builder.appid = appid
-//        }
+            builder.appid = Constant.APPID
 //        if (authcode.isNotEmpty()){
 //            builder.authcode = authcode
 //        }
+            if (accountid != 0L){
+                builder.accountid = accountid
+            }
             builder.limitnumber = limitnumber
             builder.status = status
             builder.currencyid = currencyid
             builder.outthreshold = outthreshold
+            builder.taaccounttype = 1
+            builder.areauserid = loginInfo.userID.toLong()
             if (accountname.isNotEmpty()){
                 builder.accountname = accountname
             }
@@ -316,6 +322,9 @@ class AccountAdapter {
                 if (loginRsp.retCode == 0) {
                     // 操作成功
                     Triple(true, null, loginRsp)
+                }else if (loginRsp.retCode == -1){
+                    // 操作失败
+                    Triple(false, Error(loginRsp.retDesc), null)
                 } else {
                     // 操作失败
                     Triple(false, Error(ErrorMessageUtils.getErrorString(loginRsp.retCode)), null)

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

@@ -564,5 +564,33 @@ class FutureManager {
         )
     }
 
+    /**
+     * 查询期货公司
+     * @param params Map<String, String>
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] FavoriteGoodsesData?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryFuturesCompany(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<FuturesCompanyData>?, error: Error?) -> Unit
+    ){
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + "/Ermcp/QueryFuturesCompany",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<FuturesCompanyData>>>() {
+                override fun onResponse(response: BaseResult<List<FuturesCompanyData>>?, id: Int) {
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
+
+            }
+        )
+    }
+
+
 
 }

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

@@ -0,0 +1,77 @@
+package cn.muchinfo.rma.global.data
+
+import android.os.Parcel
+import android.os.Parcelable
+
+/**
+ * 期货公司
+ */
+data class FuturesCompanyData(
+    val brokerid : String? = "",//经纪公司代码
+    val channeladdress : String? = "",//对冲渠道服务地址(多个地址用逗号分隔) – 192.168.30.10:3000,192.168.30.10:3001
+    val channelid : String? = "",//对冲渠道ID
+    val createtime : String? = "",//创建时间
+    val creatorid : String? = "",//创建人
+    val fcid : String? = "",//期货公司ID(SEQ_ERMCP_FUTURESCOMPANY)
+    val fcname : String? = "",//期货公司名称
+    val isvalid : String? = "",//是否有效 - 0:无效 1:有效
+    val mhpaddress : String? = "",//MHP服务地址(IP:Port)
+    val riskrulegroupid : String? = "",//风控规则组ID
+    val tradefeetmpid : String? = "",//手续费模板ID[TradeConfigTmpType为2]
+    val trademargintmpid : String? = "",//保证金模板ID [TradeConfigTmpType为1]
+    val traderatetmpid : String? = "",//汇率模板ID[TradeConfigTmpType为3]
+    val updatetime : String? = "",//更新时间
+    val updatorid : String? = ""//更新人
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(brokerid)
+        parcel.writeString(channeladdress)
+        parcel.writeString(channelid)
+        parcel.writeString(createtime)
+        parcel.writeString(creatorid)
+        parcel.writeString(fcid)
+        parcel.writeString(fcname)
+        parcel.writeString(isvalid)
+        parcel.writeString(mhpaddress)
+        parcel.writeString(riskrulegroupid)
+        parcel.writeString(tradefeetmpid)
+        parcel.writeString(trademargintmpid)
+        parcel.writeString(traderatetmpid)
+        parcel.writeString(updatetime)
+        parcel.writeString(updatorid)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<FuturesCompanyData> {
+        override fun createFromParcel(parcel: Parcel): FuturesCompanyData {
+            return FuturesCompanyData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<FuturesCompanyData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

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

@@ -0,0 +1,59 @@
+package cn.muchinfo.rma.global.data
+
+import android.os.Parcel
+import android.os.Parcelable
+
+/**
+ * 交易模板配置
+ */
+data class TradeConfigTMPData(
+    val areauserid : String? = "",//所属机构
+    val basiccurrencyid : String? = "",//基本币种ID[汇率] - 目标币种
+    val mainaccountid : String? = "",//主账户ID
+    val modifierid : String? = "",//主账户ID
+    val remark : String? = "",//备注
+    val tradeconfigtmpid : String? = "",//交易配置模板ID(SEQ_TRADECONFIGTMP)
+    val tradeconfigtmpname : String? = "",//交易配置模板名称
+    val tradeconfigtmptype : String? = "",//交易配置模板类型 - 1:保证金 2:手续费 3:汇率
+    val updatetime : String? = ""//更新时间
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(areauserid)
+        parcel.writeString(basiccurrencyid)
+        parcel.writeString(mainaccountid)
+        parcel.writeString(modifierid)
+        parcel.writeString(remark)
+        parcel.writeString(tradeconfigtmpid)
+        parcel.writeString(tradeconfigtmpname)
+        parcel.writeString(tradeconfigtmptype)
+        parcel.writeString(updatetime)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<TradeConfigTMPData> {
+        override fun createFromParcel(parcel: Parcel): TradeConfigTMPData {
+            return TradeConfigTMPData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<TradeConfigTMPData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

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

@@ -11,8 +11,8 @@ object Constant {
 //    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.31.175:8080/cfg?key=test_175" // shenzhen01  123123
-    const val baseurl = "http://192.168.31.223:8080/cfg?key=test_223"
+    const val baseurl = "http://192.168.31.175:8080/cfg?key=test_175" // shenzhen01  123123
+//    const val baseurl = "http://192.168.31.223:8080/cfg?key=test_223"
 
     /**
      * 用sp存储基础url的key
@@ -140,4 +140,6 @@ object Constant {
     const val VERSONCODE = "VERSONCODE"
 
     const val UploadMode = "UploadMode"
+
+    const val APPID = "muchinfo_mtpclient_5.0.1"
 }

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

@@ -18,6 +18,7 @@ import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.home.accountmanager.accountviewholder.AccountManagerViewHolder
 import cn.muchinfo.rma.view.base.home.accountmanager.accountviewholder.FutureManagerViewHolder
+import cn.muchinfo.rma.view.base.home.accountmanager.futureaccount.AddFutureAccountActivity
 import cn.muchinfo.rma.view.base.home.accountmanager.futureset.FutureSetActivity
 import cn.muchinfo.rma.view.base.home.contract.emptyView
 import cn.muchinfo.rma.view.base.home.rolemanagement.RoleSetActivity
@@ -372,7 +373,10 @@ class FuturesAccountManager(
 
                 imageView {
                     onThrottleFirstClick {
-
+                        val intent = Intent()
+                        intent.putExtra("type","1")
+                        intent.setClass(context, AddFutureAccountActivity::class.java)
+                        ActivityUtils.startActivity(intent)
                     }
                     imageResource = R.mipmap.rma_account_add
                 }.lparams(autoSize(43), autoSize(43)) {

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

@@ -105,14 +105,14 @@ class AccountManagerViewModel : BaseViewModel(){
 
 
     //账户管理-期货账户的item的子item展开隐藏点击事件
-    fun setOnFutureSonItemClick(index: Int, sonIndex: Int) {
+    fun setOnFutureSonItemClick(index: Int, accounid : String) {
         val datanewlist = arrayListOf<AccMgrTaaccountData>()
         val oldList = futureManagerList.value
         futureManagerList.value?.forEach {
             if (index == oldList?.indexOf(it)) {
                 val newHedgeList = arrayListOf<AccMgrTaaccountSonData>()
                 oldList.get(index).subacclist?.forEach { data ->
-                    if (sonIndex == oldList.get(index).subacclist?.indexOf(data)) {
+                    if (accounid == data.accountid) {
                         if (data.isSelect == 0) {
                             newHedgeList.add(data.copy(isSelect = 1))
                         } else {

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

@@ -1,5 +1,6 @@
 package cn.muchinfo.rma.view.base.home.accountmanager.accountviewholder
 
+import android.content.Intent
 import android.view.Gravity
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
@@ -11,7 +12,10 @@ import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.accountmanager.AccountManagerViewModel
+import cn.muchinfo.rma.view.base.home.accountmanager.futureaccount.AddFutureAccountActivity
+import cn.muchinfo.rma.view.base.home.accountmanager.futureaccount.AddFutureSonAccountActivity
 import cn.muchinfo.rma.view.base.home.contract.emptyView
+import com.blankj.utilcode.util.ActivityUtils
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
 import org.jetbrains.anko.*
@@ -26,9 +30,7 @@ import org.jetbrains.anko.*
 class FutureManagerViewHolder(private val activity : AppCompatActivity,private val viewModel: AccountManagerViewModel) : BaseViewHolder<AccMgrTaaccountData>(activity){
     override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
 
-    //期货合约
-    private val futureUserAdapter: BaseAdapter<AccMgrTaaccountSonData, FutureUserViewHolder> =
-        BaseAdapter { _, _ -> FutureUserViewHolder(activity, viewModel,dataIndex) }
+
 
     override fun _FrameLayout.createContentView() {
         verticalLayout {
@@ -54,7 +56,25 @@ class FutureManagerViewHolder(private val activity : AppCompatActivity,private v
 
                 imageView {
                     onThrottleFirstClick {
+                        val intent = Intent()
+                        intent.putExtra("type","2")
+                        intent.putExtra("accountid",data.value?.mainAcc?.accountid)
+                        intent.setClass(context,AddFutureAccountActivity::class.java)
+                        ActivityUtils.startActivity(intent)
+                    }
+                    imageResource = R.drawable.ic_rma_change_img
+                }.lparams(autoSize(43), autoSize(43)){
+                    marginEnd = autoSize(37)
+                }
 
+                imageView {
+                    onThrottleFirstClick {
+                        val intent = Intent()
+                        intent.putExtra("type","1")
+                        intent.putExtra("data",data.value?.mainAcc)
+                        intent.putExtra("dataSon",AccMgrTaaccountSonData())
+                        intent.setClass(context,AddFutureSonAccountActivity::class.java)
+                        ActivityUtils.startActivity(intent)
                     }
                     imageResource = R.mipmap.rma_account_add
                 }.lparams(autoSize(43), autoSize(43)){
@@ -75,11 +95,16 @@ class FutureManagerViewHolder(private val activity : AppCompatActivity,private v
                     }
                 }
                 background = resources.getDrawable(R.color.white)
-                adapter = futureUserAdapter
+                data.bindOptional(context){
+                    //期货合约
+                    val futureUserAdapter: BaseAdapter<AccMgrTaaccountSonData, FutureUserViewHolder> =
+                        BaseAdapter { _, _ -> FutureUserViewHolder(activity, viewModel,dataIndex,data.value?.mainAcc ?: AccMgrTaaccountSonData()) }
+                    adapter = futureUserAdapter
+                    futureUserAdapter.setNewData(it?.subacclist)
+                }
+
             }.lparams(matchParent, wrapContent)
-            data.bindOptional(context){
-                futureUserAdapter.setNewData(it?.subacclist)
-            }
+
         }.lparams(matchParent, wrapContent)
     }
 

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

@@ -15,6 +15,8 @@ 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.base.home.accountmanager.AccountManagerViewModel
+import cn.muchinfo.rma.view.base.home.accountmanager.futureaccount.AddFutureSonAccountActivity
+import cn.muchinfo.rma.view.base.home.accountmanager.futureaccount.FutureCreditActivity
 import cn.muchinfo.rma.view.base.home.contract.emptyView
 import cn.muchinfo.rma.view.base.home.rolemanagement.AddRoleActivity
 import com.blankj.utilcode.util.ActivityUtils
@@ -29,7 +31,7 @@ import java.io.Serializable
  * @property itemSize IntArray
  * @constructor
  */
-class FutureUserViewHolder(private val activity : AppCompatActivity,private val viewModel: AccountManagerViewModel,private val index : Int) : BaseViewHolder<AccMgrTaaccountSonData>(activity){
+class FutureUserViewHolder(private val activity : AppCompatActivity,private val viewModel: AccountManagerViewModel,private val index : Int,private val prientData : AccMgrTaaccountSonData) : BaseViewHolder<AccMgrTaaccountSonData>(activity){
     override val itemSize: IntArray = intArrayOf(matchParent, wrapContent)
 
     override fun _FrameLayout.createContentView() {
@@ -47,7 +49,7 @@ class FutureUserViewHolder(private val activity : AppCompatActivity,private val
             }
 
             onThrottleFirstClick {
-                viewModel.setOnFutureSonItemClick(index,dataIndex)
+                viewModel.setOnFutureSonItemClick(index,data.value?.accountid ?: "")
             }
 
             linearLayout {
@@ -92,7 +94,12 @@ class FutureUserViewHolder(private val activity : AppCompatActivity,private val
                 emptyView()
                 textView {
                     onThrottleFirstClick {
-
+                        val intent = Intent()
+                        intent.putExtra("type","3")
+                        intent.putExtra("data",prientData)
+                        intent.putExtra("dataSon",data.value)
+                        intent.setClass(context, AddFutureSonAccountActivity::class.java)
+                        ActivityUtils.startActivity(intent)
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
@@ -112,7 +119,12 @@ class FutureUserViewHolder(private val activity : AppCompatActivity,private val
                         }
                     }
                     onThrottleFirstClick {
-
+                        val intent = Intent()
+                        intent.putExtra("type","2")
+                        intent.putExtra("data",prientData)
+                        intent.putExtra("dataSon",data.value)
+                        intent.setClass(context, AddFutureSonAccountActivity::class.java)
+                        ActivityUtils.startActivity(intent)
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
@@ -132,17 +144,14 @@ class FutureUserViewHolder(private val activity : AppCompatActivity,private val
                         }
                     }
                     onThrottleFirstClick {
-//                        viewModel.LoginaccountOperateReq(
-//                            operatetype = 5,
-//                            userid = data.value?.userid?.toLong() ?: 0,
-//                            loginid = data.value?.loginid?.toLong() ?: 0
-//                        ){
-//                            viewModel.queryAccMgrLoginUser()
-//                        }
+                        val intent = Intent()
+                        intent.putExtra("data",data.value)
+                        intent.setClass(context,FutureCreditActivity::class.java)
+                        ActivityUtils.startActivity(intent)
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
-                    text = "锁定"
+                    text = "授信"
                     textColorInt = R.color.rma_item_click_color
                     textSizeAuto = 26
                 }.lparams(autoSize(110), autoSize(48)) {

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

@@ -7,12 +7,16 @@ import android.view.inputmethod.EditorInfo
 import android.widget.EditText
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.contract.emptyView
 import com.blankj.utilcode.util.ToastUtils
 import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.dialog.creatBottomSheetDialog
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 
 /**
@@ -26,9 +30,11 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
     private val type by lazy { intent.getStringExtra("type") }
 
     /**
-     * 选择的期货公司
+     * 修改删除操作时需要用到accountid来请求详情数据
      */
-    private val selectFuturesCompany : MutableLiveData<SelectData> = MutableLiveData()
+    private val accountid by lazy { intent.getStringExtra("accountid") }
+
+
 
     /**
      * 输入的账户名称
@@ -55,12 +61,21 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
      */
     private lateinit var authorization_code : EditText
 
+    /**
+     * 页面数据初始化
+     */
+    fun init(){
+        viewModel.queryFuturesCompany(accountid ?: "")
+    }
+
+    val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.main_hit_bg_color)
-
+            init()
             //页面标题
             topBar {
                 commonLeftButton()
@@ -73,37 +88,29 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                 }
             }
             linearLayout {
+                background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 onThrottleFirstClick {
-//                    val selectDataList = arrayListOf(
-//                        SelectData(
-//                            id = "2",
-//                            value = "套利"
-//                        ),
-//                        SelectData(
-//                            id = "1",
-//                            value = "套保"
-//                        )
-//                    )
-//                    creatBottomSheetDialog("请选择业务类型", selectDataList) {
-////                        selectBusinessType.postValue(this)
-//                    }
+                    creatBottomSheetDialog("请选择期货公司", viewModel.getCanSelectFutureCompanyList()) {
+                        viewModel.selectFuturesCompany.postValue(this)
+                    }
                 }
                 textView {
                     text = "期货公司"
                     textSizeAuto = 31
-                    textColorInt = R.color.rma_hint_text_color_ccc
+                    textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent){
                     marginStart = autoSize(60)
                 }
 
                 textView {
-//                    selectBusinessType.bindOptional(context){
-//                        text = it?.value
-//                    }
+                    viewModel.selectFuturesCompany.bindOptional(context){
+                        text = it?.value
+                        textColorInt = R.color.rma_black_33
+                    }
                     text = "请选择期货公司"
                     textSizeAuto = 31
-                    textColorInt = R.color.rma_black_33
+                    textColorInt = R.color.rma_hint_text_color_ccc
                 }.lparams(wrapContent, wrapContent){
                     marginStart = autoSize(110)
                 }
@@ -187,9 +194,10 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                 }
             }.lparams(matchParent, autoSize(132))
 
-            itemView()
+//            itemView()
 
             linearLayout {
+                visibility = View.GONE
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
 
@@ -259,9 +267,10 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                 }
             }.lparams(matchParent, autoSize(132))
 
-            itemView()
+//            itemView()
 
             linearLayout {
+                visibility = View.GONE
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
 
@@ -310,7 +319,9 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                         View.VISIBLE
                     }
                     onThrottleFirstClick {
-
+                        viewModel.TaaccountOperateReq(accountid = accountid?.toLong() ?: 0){
+                            finish()
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_save_info_bg
@@ -328,7 +339,18 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                         View.VISIBLE
                     }
                     onThrottleFirstClick {
-
+                        if (check().not()){
+                            return@onThrottleFirstClick
+                        }
+                        viewModel.hedgeOutMainConfigReq(
+                            ismain = 1,
+                            accountname = account_name.text.toString(),
+                            hedgeaccountpwd = password.text.toString(),
+                            hedgeaccountcode = login_account.text.toString(),
+                            fcid = viewModel.selectFuturesCompany.value?.id?.toLong() ?: 0
+                        ){
+                            finish()
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg
@@ -346,13 +368,24 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
                         View.GONE
                     }
                     onThrottleFirstClick {
-
+                        if (check().not()){
+                            return@onThrottleFirstClick
+                        }
+                        viewModel.hedgeOutMainConfigReq(
+                            ismain = 1,
+                            accountname = account_name.text.toString(),
+                            hedgeaccountpwd = password.text.toString(),
+                            hedgeaccountcode = login_account.text.toString(),
+                            fcid = viewModel.selectFuturesCompany.value?.id?.toLong() ?: 0
+                        ){
+                            finish()
+                        }
                     }
                     gravity = Gravity.CENTER
-                    backgroundResource = R.mipmap.rma_save_info_bg
+                    backgroundResource = R.mipmap.rma_submit_bg
                     text = "完成"
                     textSizeAuto = 38
-                    textColorInt = R.color.rma_star_color
+                    textColorInt = R.color.white
                 }.lparams(matchParent, autoSize(119)) {
                     marginStart = autoSize(60)
                     marginEnd = autoSize(60)
@@ -366,7 +399,7 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
      * 提交数据前的校验
      */
     fun check() : Boolean{
-        if (selectFuturesCompany.value?.id.isNullOrEmpty()){
+        if (viewModel.selectFuturesCompany.value?.id.isNullOrEmpty()){
             ToastUtils.showLong("请选择期货公司")
             return false
         }
@@ -378,18 +411,18 @@ class AddFutureAccountActivity : BaseActivity<FutureAccountViewModel>(){
             ToastUtils.showLong("请输入期货登录账号")
             return false
         }
-        if (APPID_input.text.toString().isNullOrEmpty()){
-            ToastUtils.showLong("请输入APPID")
-            return false
-        }
+//        if (APPID_input.text.toString().isNullOrEmpty()){
+//            ToastUtils.showLong("请输入APPID")
+//            return false
+//        }
         if (password.text.toString().isNullOrEmpty()){
             ToastUtils.showLong("请输入交易密码")
             return false
         }
-        if (authorization_code.text.toString().isNullOrEmpty()){
-            ToastUtils.showLong("请输入授权码")
-            return false
-        }
+//        if (authorization_code.text.toString().isNullOrEmpty()){
+//            ToastUtils.showLong("请输入授权码")
+//            return false
+//        }
         return true
     }
 

+ 132 - 54
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/AddFutureSonAccountActivity.kt

@@ -1,5 +1,6 @@
 package cn.muchinfo.rma.view.base.home.accountmanager.futureaccount
 
+import android.annotation.SuppressLint
 import android.os.Bundle
 import android.view.Gravity
 import android.view.View
@@ -7,18 +8,24 @@ import android.view.inputmethod.EditorInfo
 import android.widget.EditText
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.AccMgrTaaccountData
+import cn.muchinfo.rma.global.data.AccMgrTaaccountSonData
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.contract.emptyView
+import com.blankj.utilcode.util.ToastUtils
 import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.dialog.creatBottomSheetDialog
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 
 /**
  * 新增期货子账户
  */
-class AddFutureSonAccountActivity : BaseActivity<FutureAccountViewModel>(){
+class AddFutureSonAccountActivity : BaseActivity<FutureAccountViewModel>() {
 
     /**
      * 页面操作类型 1 新增 2 修改 3 详情
@@ -26,62 +33,66 @@ class AddFutureSonAccountActivity : BaseActivity<FutureAccountViewModel>(){
     private val type by lazy { intent.getStringExtra("type") }
 
     /**
-     * 输入的账户名称
+     * 新增/修改时需要拿到的相应期货主账户信息
      */
-    private lateinit var account_name : EditText
+    private val data by lazy { intent.getParcelableExtra<AccMgrTaaccountSonData>("data") as AccMgrTaaccountSonData }
 
     /**
-     * 选择的期货保证金
+     * 修改时需要拿到的相应期货子账户信息
      */
-    private val select_futures_margin : MutableLiveData<SelectData> = MutableLiveData()
+    private val dataSon by lazy { intent.getParcelableExtra<AccMgrTaaccountSonData>("dataSon") as AccMgrTaaccountSonData }
 
     /**
-     * 选择的期货手续费
+     * 输入的账户名称
      */
-    private val select_forward_commission : MutableLiveData<SelectData> = MutableLiveData()
+    private lateinit var account_name: EditText
 
     /**
      * 页面数据初始化
      */
-    fun init(){
-        select_futures_margin.postValue(SelectData(id = "1",value = "默认保证金"))
-        select_forward_commission.postValue(SelectData(id = "1",value = "默认手续费"))
+    fun init() {
+        viewModel.queryTradeConfigTMP()
     }
 
+    val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
+
+    @SuppressLint("SetTextI18n")
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.main_hit_bg_color)
-
+            init()
             //页面标题
             topBar {
                 commonLeftButton()
                 commonTitle {
-                    text = if (type == "1"){
+                    text = if (type == "1") {
                         "新增期货子账户"
-                    }else if (type == "2"){
+                    } else if (type == "2") {
                         "修改期货子账户"
-                    }else{
+                    } else {
                         "期货子账户详情"
                     }
                 }
             }
 
             linearLayout {
+                background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     text = "所属期货账户"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_gray_color
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(60)
                 }
 
                 textView {
-                    text = "王小二/18643549988"
+                    text = data.accountname + "/" + data.accountid
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(65)
                 }
             }.lparams(matchParent, autoSize(132))
@@ -103,12 +114,18 @@ class AddFutureSonAccountActivity : BaseActivity<FutureAccountViewModel>(){
                 textView {
                     text = "账户名称"
                     textSizeAuto = 31
-                    textColorInt = R.color.rma_black_33
+                    textColorInt = R.color.rma_gray_color
                 }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(10)
                 }
 
                 editText {
+                    if (type != "1"){
+                        setText(dataSon.accountname)
+                    }
+                    if (type == "3"){
+                        isEnabled = false
+                    }
                     account_name = this
                     hint = "请输入账户名称"
                     background = null
@@ -125,44 +142,50 @@ class AddFutureSonAccountActivity : BaseActivity<FutureAccountViewModel>(){
             itemView()
 
             linearLayout {
+                background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 onThrottleFirstClick {
-//                    val selectDataList = arrayListOf(
-//                        SelectData(
-//                            id = "2",
-//                            value = "套利"
-//                        ),
-//                        SelectData(
-//                            id = "1",
-//                            value = "套保"
-//                        )
-//                    )
-//                    creatBottomSheetDialog("请选择业务类型", selectDataList) {
-////                        selectBusinessType.postValue(this)
-//                    }
+                    if (type == "3"){
+                        return@onThrottleFirstClick
+                    }
+                    val selectDataList = arrayListOf<SelectData>()
+                    viewModel.trademarginConfigTmpDataList.value?.forEach {
+                        selectDataList.add(
+                            SelectData(
+                                id = it?.tradeconfigtmpid ?: "",
+                                value = it?.tradeconfigtmpname ?: ""
+                            )
+                        )
+                    }
+                    creatBottomSheetDialog("请选择期货保证金", selectDataList) {
+                        viewModel.select_futures_margin.postValue(this)
+                    }
                 }
                 textView {
                     text = "期货保证金"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_hint_text_color_ccc
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(60)
                 }
 
                 textView {
-                    select_futures_margin.bindOptional(context){
+                    viewModel.select_futures_margin.bindOptional(context) {
                         text = it?.value
                     }
                     text = "默认保证金"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(110)
                 }
 
                 emptyView()
 
                 imageView {
+                    if (type == "3"){
+                        visibility = View.GONE
+                    }
                     imageResource = R.mipmap.rma_more
                 }.lparams(autoSize(43), autoSize(43))
             }.lparams(matchParent, autoSize(132))
@@ -170,65 +193,102 @@ class AddFutureSonAccountActivity : BaseActivity<FutureAccountViewModel>(){
             itemView()
 
             linearLayout {
+                background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 onThrottleFirstClick {
-//                    val selectDataList = arrayListOf(
-//                        SelectData(
-//                            id = "2",
-//                            value = "套利"
-//                        ),
-//                        SelectData(
-//                            id = "1",
-//                            value = "套保"
-//                        )
-//                    )
-//                    creatBottomSheetDialog("请选择业务类型", selectDataList) {
-////                        selectBusinessType.postValue(this)
-//                    }
+                    if (type == "3"){
+                        return@onThrottleFirstClick
+                    }
+                    val selectDataList = arrayListOf<SelectData>()
+                    viewModel.tradepoundageConfigTmpDataList.value?.forEach {
+                        selectDataList.add(
+                            SelectData(
+                                id = it.tradeconfigtmpid ?: "",
+                                value = it.tradeconfigtmpname ?: ""
+                            )
+                        )
+                    }
+                    creatBottomSheetDialog("请选择期货手续费", selectDataList) {
+                        viewModel.select_forward_commission.postValue(this)
+                    }
                 }
                 textView {
                     text = "期货手续费"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_hint_text_color_ccc
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(60)
                 }
 
                 textView {
-                    select_forward_commission.bindOptional(context){
+                    viewModel.select_forward_commission.bindOptional(context) {
                         text = it?.value
                     }
                     text = "默认手续费"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
-                }.lparams(wrapContent, wrapContent){
+                }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(110)
                 }
 
                 emptyView()
 
                 imageView {
+                    if (type == "3"){
+                        visibility = View.GONE
+                    }
                     imageResource = R.mipmap.rma_more
                 }.lparams(autoSize(43), autoSize(43))
             }.lparams(matchParent, autoSize(132))
 
             view {
 
-            }.lparams(autoSize(1),0,1f)
+            }.lparams(autoSize(1), 0, 1f)
 
             linearLayout {
                 background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
-
+                if (type == "3") {
+                    visibility = View.GONE
+                } else {
+                    visibility = View.VISIBLE
+                }
                 textView {
                     onThrottleFirstClick {
+                        if (check().not()) {
+                            return@onThrottleFirstClick
+                        }
+                        if (type == "1"){//新增
+                            viewModel.hedgeOutMainConfigReq(
+                                ismain = 0,
+                                accountname = account_name.text.toString(),
+                                parentaccountid = data.parentaccountid?.toLong() ?: 0,
+                                tradefeetmpid = viewModel.select_forward_commission.value?.id?.toLong() ?: 0,
+                                trademargintmpid = viewModel.select_futures_margin.value?.id?.toLong() ?: 0,
+                                fromaccountid = data.parentaccountid?.toLong() ?: 0
+                            ){
+                                finish()
+                            }
+                        }else {//修改
+                            viewModel.hedgeOutMainConfigReq(
+                                ismain = 0,
+                                accountname = account_name.text.toString(),
+                                parentaccountid = data.parentaccountid?.toLong() ?: 0,
+                                tradefeetmpid = viewModel.select_forward_commission.value?.id?.toLong() ?: 0,
+                                trademargintmpid = viewModel.select_futures_margin.value?.id?.toLong() ?: 0,
+                                fromaccountid = data.parentaccountid?.toLong() ?: 0,
+                                accountid = dataSon.accountid?.toLong() ?: 0
+                            ){
+                                finish()
+                            }
+                        }
 
                     }
                     gravity = Gravity.CENTER
-                    backgroundResource = R.mipmap.rma_save_info_bg
+                    backgroundResource = R.mipmap.rma_submit_bg
                     text = "完成"
                     textSizeAuto = 38
-                    textColorInt = R.color.rma_star_color
+                    textColorInt = R.color.white
                 }.lparams(matchParent, autoSize(119)) {
                     marginStart = autoSize(60)
                     marginEnd = autoSize(60)
@@ -237,4 +297,22 @@ class AddFutureSonAccountActivity : BaseActivity<FutureAccountViewModel>(){
         }
     }
 
+    /**
+     * 操作之前的数据校验
+     */
+    fun check(): Boolean {
+        if (viewModel.select_futures_margin.value?.id?.isNullOrEmpty() == true) {
+            ToastUtils.showLong("请选择保证金模式")
+            return false
+        }
+        if (viewModel.select_forward_commission.value?.id?.isNullOrEmpty() == true) {
+            ToastUtils.showLong("请选择手续费模式")
+            return false
+        }
+        if (account_name.text.toString().isNullOrEmpty()) {
+            ToastUtils.showLong("请输入名称")
+            return false
+        }
+        return true
+    }
 }

+ 313 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/FutureAccountViewModel.kt

@@ -1,12 +1,325 @@
 package cn.muchinfo.rma.view.base.home.accountmanager.futureaccount
 
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.AccMgrMainAccountInfoData
+import cn.muchinfo.rma.global.data.AccMgrTaAccountInfoData
+import cn.muchinfo.rma.global.data.FuturesCompanyData
+import cn.muchinfo.rma.global.data.TradeConfigTMPData
+import cn.muchinfo.rma.netManage.base.InteractiveException
+import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
+import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.utils.TaskUiModel
 
 /**
  * 用于新增期货主账户/子账户/授信的操作的viewmodel
  */
 class FutureAccountViewModel : BaseViewModel(){
 
+    /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
 
+    /**
+     * 期货公司列表数据
+     */
+    val futureCompanyList : MutableLiveData<List<FuturesCompanyData>> = MutableLiveData()
 
+    /**
+     * 期货公司主账户详情
+     */
+    val futureAccountDetailsData : MutableLiveData<AccMgrMainAccountInfoData> = MutableLiveData()
+
+    /**
+     * 选择的期货公司
+     */
+    val selectFuturesCompany : MutableLiveData<SelectData> = MutableLiveData()
+
+    /**
+     * 交易模式列表(保证金)
+     */
+    val trademarginConfigTmpDataList : MutableLiveData<List<TradeConfigTMPData>> = MutableLiveData()
+
+    /**
+     * 交易模式列表(手续费)
+     */
+    val tradepoundageConfigTmpDataList : MutableLiveData<List<TradeConfigTMPData>> = MutableLiveData()
+
+    /**
+     * 期货子账户选择的期货保证金
+     */
+    val select_futures_margin : MutableLiveData<SelectData> = MutableLiveData()
+
+    /**
+     * 期货子账户选择的期货手续费
+     */
+    val select_forward_commission : MutableLiveData<SelectData> = MutableLiveData()
+
+
+    /**
+     * 期货账户授信信息
+     */
+    val AccMgrTaAccountInfoDataList : MutableLiveData<AccMgrTaAccountInfoData> = MutableLiveData()
+
+    /**
+     * 期货账户新增修改请求报文装箱
+    optional MessageHead Header = 1; // MessageHead
+    optional uint64 marketid = 2; // uint64 内部市场ID(HedgeOutMainConfig)
+    optional string hedgeaccountcode = 3; // string 对冲账号ID(HedgeOutMainConfig)
+    optional int32 connectflag = 4; // int32 是否联接外部交易 - 0:不连接 1:连接(HedgeOutMainConfig)
+    optional string hedgeaccountpwd = 5; // string 对冲账号密码(HedgeOutMainConfig)
+    optional string appid = 6; // string AppID(HedgeOutMainConfig)
+    optional string authcode = 7; // string 授权码(HedgeOutMainConfig)
+    optional uint64 limitnumber = 8; // uint64 挂单笔数限额默认0(HedgeOutMainConfig)
+    optional int32 status = 9; // int32 渠道账号状态 1-可买入可卖出 2-可卖出不可买入默认1(HedgeOutMainConfig)
+    optional string accountname = 10; // string 账户名称accountname1(Taaccount)
+    optional uint64 accountid = 11; // uint64 资金账户ID(Taaccount)
+    optional int32 taaccounttype = 12; // int32 账号类型 - 1:外部账号 2:内部账号 3:内部做市自营账号 4:内部做市接单账号(Taaccount)
+    optional int32 currencyid = 13; // int32 货币ID默认为1(Taaccount)
+    optional double outthreshold = 14; // double 出金阈值默认为0(Taaccount)
+    optional int32 ismain = 15; // int32 是否母账号 0:不是母账户 1:是母账户(Taaccount)
+    optional uint64 parentaccountid = 16; // uint64 所属根账号(Taaccount)
+    optional uint64 relateduserid = 17; // uint64 关联用户(Taaccount)
+    optional uint64 fromaccountid = 18; // uint64 所属上级账户(Taaccount)
+    optional uint64 trademargintmpid = 19; // uint64 保证金模板id(TAACCOUNTCONFIG)
+    optional uint64 tradefeetmpid = 20; // uint64 手续费模板ID(TAACCOUNTCONFIG)
+    optional uint64 maxsubaccouts = 21; // uint64 最大子账户数[最大99999][外部母账户用 默认0(TAACCOUNTCONFIG)
+    optional uint64 fcid = 22; // uint64 期货公司
+    optional uint64 creatorid = 23; // uint64 创建人
+    optional uint64 modifierid = 24; // uint64 修改人
+    optional uint64 areauserid = 25; // uint64 机构用户ID
+     */
+    fun hedgeOutMainConfigReq(
+        hedgeaccountcode: String = "",
+        hedgeaccountpwd: String = "",
+        limitnumber: Long = 0,
+        status: Int = 1,
+        accountname: String = "",
+        currencyid: Int = 1,
+        outthreshold: Double = 0.0,
+        ismain: Int,
+        parentaccountid: Long = 0,
+        fromaccountid: Long = 0,
+        trademargintmpid: Long = 0,
+        tradefeetmpid: Long = 0,
+        maxsubaccouts: Long = 0,
+        fcid: Long = 0,
+        accountid : Long = 0,
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.accountManager?.hedgeOutMainConfigReq(
+                hedgeaccountcode = hedgeaccountcode,
+                hedgeaccountpwd = hedgeaccountpwd,
+                limitnumber = limitnumber,
+                status = status,
+                accountname = accountname,
+                currencyid = currencyid,
+                outthreshold = outthreshold,
+                ismain = ismain,
+                parentaccountid = parentaccountid,
+                fromaccountid = fromaccountid,
+                trademargintmpid = trademargintmpid,
+                tradefeetmpid = tradefeetmpid,
+                maxsubaccouts = maxsubaccouts,
+                fcid = fcid,
+                accountid = accountid
+            ){ isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+    /**
+     * 请求期货主账号详情
+     */
+    fun queryAccMgrMainAccountInfo(accountid : String){
+        val params = mutableMapOf<String, String>().apply {
+            put("userid",GlobalDataCollection.instance?.loginRsp?.userID.toString())
+            put("accountid",accountid)
+        }
+
+        MyApplication.getInstance()?.accountManager?.queryAccMgrMainAccountInfo(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                if (respData?.size ?: 0 > 0){
+                    futureAccountDetailsData.postValue(respData?.get(0))
+                    resetAccountfcid()
+                }
+            }
+        }
+    }
+
+    /**
+     * 期货主账户详情内修改和删除时回填期货公司信息
+     */
+    fun resetAccountfcid(){
+        futureCompanyList.value?.forEach {
+            if (it.fcid == futureAccountDetailsData.value?.fcid){
+                selectFuturesCompany.postValue(SelectData(id = it.fcid ?: "",value = it.fcname ?: ""))
+            }
+        }
+    }
+
+    /**
+     * 查询期货公司
+     */
+    fun queryFuturesCompany(accountid : String){
+        val params = mutableMapOf<String, String>()
+
+        MyApplication.getInstance()?.futureManager?.queryFuturesCompany(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                futureCompanyList.postValue(respData)
+                if (accountid.isNotEmpty()){
+                    queryAccMgrMainAccountInfo(accountid)
+                }
+            }
+        }
+    }
+
+    /**
+     * 获取可供且可用的选择的期货公司列表
+     */
+    fun getCanSelectFutureCompanyList() : List<SelectData>{
+        val oldFutureList = futureCompanyList.value
+        val selectList = arrayListOf<SelectData>()
+        oldFutureList?.forEach {
+            if (it.isvalid == "1"){
+                selectList.add(SelectData(id = it.fcid ?: "",value = it.fcname ?: ""))
+            }
+        }
+        return selectList
+    }
+
+    /**
+     * 期货账户注销
+     * @param accountid Long 期货账户ID
+     * @return Packet50
+     */
+    fun TaaccountOperateReq(
+        accountid : Long,
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.accountManager?.TaaccountOperateReq(
+                accountid = accountid
+            ){ isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+    /**
+     * 用于新增修改期货子账户的交易模版配置
+     */
+    fun queryTradeConfigTMP(){
+        val params = mutableMapOf<String, String>().apply {
+            put("areauserid",GlobalDataCollection.instance?.loginRsp?.userID.toString())
+        }
+        MyApplication.getInstance()?.accountManager?.queryTradeConfigTMP(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                setFutureSonSelectData(respData ?: arrayListOf())
+            }
+        }
+    }
+
+    /**
+     * 新增修改期货子账户获取可供选择的保证金手续费等数据列表
+     * @param type String 1 保证金 2 手续费
+     */
+    fun setFutureSonSelectData(dataList : List<TradeConfigTMPData>){
+        val marginDatalist = arrayListOf<TradeConfigTMPData>()//保证金列表
+        val poundageDataList = arrayListOf<TradeConfigTMPData>()//手续费列表
+        dataList?.forEach {
+            if (it.tradeconfigtmptype == "1"){
+                marginDatalist.add(it)
+            }else if (it.tradeconfigtmptype == "2"){
+                poundageDataList.add(it)
+            }
+        }
+        if (marginDatalist.isNotEmpty()){
+            select_futures_margin.postValue(SelectData(id = marginDatalist.get(0).tradeconfigtmpid ?: "",value = marginDatalist.get(0).tradeconfigtmpname ?: ""))
+        }
+        if (poundageDataList.isNotEmpty()){
+            select_forward_commission.postValue(SelectData(id = poundageDataList.get(0).tradeconfigtmpid ?: "",value = poundageDataList.get(0).tradeconfigtmpname ?: ""))
+        }
+        trademarginConfigTmpDataList.postValue(marginDatalist)
+        tradepoundageConfigTmpDataList.postValue(poundageDataList)
+    }
+
+    /**
+     * 查询账户管理授信(账户管理/账户设置/授信)
+     */
+    fun queryAccMgrTaAccountInfo(accountid: String){
+        val params = mutableMapOf<String, String>().apply {
+            put("userid",GlobalDataCollection.instance?.loginRsp?.userID.toString())
+            put("accountid",accountid)
+        }
+        MyApplication.getInstance()?.accountManager?.queryAccMgrTaAccountInfo(params = params){isSuccess, respData, error ->
+            if (isSuccess){
+                if (respData?.isNotEmpty() == true){
+                    AccMgrTaAccountInfoDataList.postValue(respData?.get(0))
+                }
+            }
+        }
+    }
+
+    /**
+     * 期货账户授信报文装箱
+     * @param accountid Long 期货账户ID
+     * @param sxmoney Double 授信金额正为加负为减
+     */
+    fun TaaccountTransfersxmoneyReq(
+        accountid : Long,
+        sxmoney : Double,
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.accountManager?.TaaccountTransfersxmoneyReq(
+                accountid = accountid,
+                sxmoney = sxmoney
+            ){ isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
 }

+ 41 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/futureaccount/FutureCreditActivity.kt

@@ -5,24 +5,38 @@ import android.view.Gravity
 import android.view.View
 import android.view.inputmethod.EditorInfo
 import android.widget.EditText
+import android.widget.Toast
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.AccMgrTaaccountSonData
+import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
 import cn.muchinfo.rma.view.base.future.trade.itemView
+import com.blankj.utilcode.util.ToastUtils
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 
 class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
 
     /**
+     * 期货账户信息
+     */
+    private val data by lazy { intent.getParcelableExtra<AccMgrTaaccountSonData>("data") as AccMgrTaaccountSonData }
+
+    /**
      * 输入的授信金额
      */
     lateinit var credit_amount : EditText
 
+    val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)
             background = resources.getDrawable(R.color.main_hit_bg_color)
-
+            viewModel.queryAccMgrTaAccountInfo(data.accountid ?: "")
             //页面标题
             topBar {
                 commonLeftButton()
@@ -32,6 +46,7 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
             }
 
             linearLayout {
+                background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     text = "账户名称"
@@ -42,7 +57,8 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
                 }
 
                 textView {
-                    text = "王小二"
+
+                    text = data.accountname
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent){
@@ -53,6 +69,7 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
             itemView()
 
             linearLayout {
+                background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     text = "资金账号"
@@ -63,7 +80,7 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
                 }
 
                 textView {
-                    text = "32131231231"
+                    text = data.accountid
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
                 }.lparams(wrapContent, wrapContent){
@@ -74,6 +91,7 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
             itemView()
 
             linearLayout {
+                background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     text = "授信总额"
@@ -84,6 +102,9 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
                 }
 
                 textView {
+                    viewModel.AccMgrTaAccountInfoDataList.bindOptional(context){
+                        text = it?.mortgagecredit + "元"
+                    }
                     text = "10000"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
@@ -95,6 +116,7 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
             itemView()
 
             linearLayout {
+                background = resources.getDrawable(R.color.white)
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     text = "子账户当前余额"
@@ -105,6 +127,9 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
                 }
 
                 textView {
+                    viewModel.AccMgrTaAccountInfoDataList.bindOptional(context){
+                        text = it?.capitalbalance + "元"
+                    }
                     text = "10000"
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33
@@ -130,7 +155,7 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
                 textView {
                     text = "授信金额"
                     textSizeAuto = 31
-                    textColorInt = R.color.rma_black_33
+                    textColorInt = R.color.rma_gray_color
                 }.lparams(wrapContent, wrapContent) {
                     marginStart = autoSize(10)
                 }
@@ -139,8 +164,8 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
                     credit_amount = this
                     hint = "请输入授信金额,正数为增加,负数为减少"
                     background = null
-                    inputType = EditorInfo.TYPE_CLASS_NUMBER or EditorInfo.TYPE_NUMBER_FLAG_SIGNED
-                    setDecimalInputType()
+                    inputType = EditorInfo.TYPE_CLASS_NUMBER or EditorInfo.TYPE_NUMBER_FLAG_SIGNED or EditorInfo.TYPE_NUMBER_FLAG_DECIMAL
+//                    setDecimalInputType()
                     hintColorStr = "#CCCCCC"
                     textSizeAuto = 31
                     textColorStr = "#333333"
@@ -159,7 +184,16 @@ class FutureCreditActivity : BaseActivity<FutureAccountViewModel>(){
 
                 textView {
                     onThrottleFirstClick {
-
+                        if (credit_amount.text.toString().isNullOrEmpty()){
+                            ToastUtils.showLong("请输入授信金额")
+                            return@onThrottleFirstClick
+                        }
+                        viewModel.TaaccountTransfersxmoneyReq(
+                            accountid = data.accountid?.toLong() ?: 0,
+                            sxmoney = credit_amount.text.toString().toDouble()
+                        ){
+                            finish()
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_save_info_bg

+ 9 - 0
RMA/app/src/main/res/drawable/ic_rma_change_img.xml

@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="200dp"
+    android:height="200dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M353.49,557.77l-44.11,169.44c-2.4,8.22 -0.74,17.09 4.47,23.89 5.2,6.8 13.33,10.71 21.9,10.54h10.76l151.69,-41.42h4.84l416.35,-430.34a69.42,69.42 0,0 0,18.29 -53.79,86.56 86.56,0 0,0 -23.67,-59.17l-39.81,-46.26a81.75,81.75 0,0 0,-53.8 -25.28,68.81 68.81,0 0,0 -47.87,19.9L356.72,555.62l-3.23,2.15zM877.43,237.71l-40.88,42.49 -67.24,-71 40.88,-42.5c7.43,-6.9 18.93,-6.9 26.36,0l39.8,40.35c3.95,4.26 6.25,9.79 6.46,15.6 -0.03,4.32 -1.56,8.5 -4.31,11.83l-1.07,3.23zM427.73,565.84l296.93,-312 67.24,71L494.97,634.7l-67.24,-68.86zM373.94,691.72l22.06,-82.3 57.55,60.78 -79.61,21.52zM897.34,412.53a22.05,22.05 0,0 0,-18.29 6.46,26.88 26.88,0 0,0 -9.68,23.13v401.83c-0.27,20.57 -16.56,37.34 -37.12,38.19L186.74,882.14c-9.85,-0.3 -19.16,-4.57 -25.82,-11.84a37.69,37.69 0,0 1,-10.76 -26.36L150.16,184.45a37.69,37.69 0,0 1,10.76 -26.9,36.04 36.04,0 0,1 25.82,-11.29L611.7,146.26c15.62,-1.15 27.52,-14.48 26.89,-30.12 0.01,-7.75 -2.87,-15.23 -8.07,-20.98 -6.75,-6.45 -16,-9.6 -25.28,-8.61L180.82,86.55a92.55,92.55 0,0 0,-65.63 26.89,95.21 95.21,0 0,0 -26.9,66.17v664.34a90.37,90.37 0,0 0,25.82 65.63,88.21 88.21,0 0,0 64.55,27.97h653.58a90.91,90.91 0,0 0,64.16 -27.57,90.93 90.93,0 0,0 25.67,-64.95L922.07,441.04c0.3,-7.8 -2.62,-15.39 -8.07,-20.98a29.59,29.59 0,0 0,-20.98 -8.61l4.32,1.08zM897.34,412.53"
+      android:fillColor="#3B97FF"/>
+</vector>