Quellcode durchsuchen

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

Liu.bolan vor 4 Jahren
Ursprung
Commit
8cfe7f8fe5
36 geänderte Dateien mit 844 neuen und 91 gelöschten Zeilen
  1. 0 6
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt
  2. 2 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/bank/adapter/BankAdapter.kt
  3. 11 2
      RMA/app/src/main/java/cn/muchinfo/rma/business/future/FutureManager.kt
  4. 120 0
      RMA/app/src/main/java/cn/muchinfo/rma/business/money/MoneyManager.kt
  5. 236 1
      RMA/app/src/main/java/cn/muchinfo/rma/business/money/adapter/MoneyAdapter.kt
  6. 2 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/AccountData.kt
  7. 3 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/PickGoodsData.kt
  8. 14 0
      RMA/app/src/main/java/cn/muchinfo/rma/protobuf/funcode/FunCode.java
  9. 3 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainActivity.kt
  10. 12 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainViewModel.kt
  11. 9 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/MyApplication.kt
  12. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  13. 1 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/trade/GoodsTradeViewModel.kt
  14. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/PayActivity.kt
  15. 58 8
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/SeaKingMainFragment.kt
  16. 22 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/SeaKingMainViewModel.kt
  17. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/AddCastSurelyActivity.kt
  18. 1 5
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyViewModel.kt
  19. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/pickup/PickUpGoodViewHolder.kt
  20. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/pickup/PickUpGoodsActivity.kt
  21. 6 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithDrawManagementActivity.kt
  22. 42 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithdrawalActivity.kt
  23. 147 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithdrawalViewModel.kt
  24. 13 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/adapter/PlatnumTreasureAdapter.java
  25. 4 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/CancellationsViewHolder.kt
  26. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/DealViewHolder.kt
  27. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/NoPayViewHolder.kt
  28. 14 32
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumBuyOrSellUI.kt
  29. 23 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumCancellationsUI.kt
  30. 13 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumMoneyUI.kt
  31. 21 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumPositionUI.kt
  32. 10 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumTradeActivity.kt
  33. 16 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumTradeViewModel.kt
  34. 13 5
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PositionViewHolder.kt
  35. 14 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/eventbus/EventConstent.kt
  36. 2 2
      RMA/app/src/main/res/layout/view_countdowntime.xml

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

@@ -260,12 +260,6 @@ class AccountManager {
 
                 override fun onResponse(response: BaseResult<LoginQueryData>?, id: Int) {
                     GlobalDataCollection.instance?.loginQueryData = response?.data
-                    val goodsUpdateTime = GlobalDataCollection.instance?.goodsInfoUpdateTime
-                    val localGoodsUpdataTime =
-                        SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME)
-                    if (localGoodsUpdataTime != goodsUpdateTime) {
-                        SPUtils.getInstance().put(Constant.GOODS_UPDATE_TIME, goodsUpdateTime)
-                    }
                     callBack(true, null)
                 }
             }

+ 2 - 1
RMA/app/src/main/java/cn/muchinfo/rma/business/bank/adapter/BankAdapter.kt

@@ -46,7 +46,8 @@ object BankAdapter {
                 18
             )
         )
-
+        builder.isForce = 0
+        builder.exchId = ""
         builder.accountCode = AccountCode
         builder.extOperatorID = TimeUtils.getNowMills()
         builder.cusBankID = CusBankID

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

@@ -51,7 +51,10 @@ class FutureManager {
         if (SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME).isNotEmpty()){
             lastUpdateTime = SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME)
         }
-        params["lastUpdateTime"] = lastUpdateTime.toShowTime()
+        if (lastUpdateTime != "0"){
+            params["lastUpdateTime"] = lastUpdateTime.toShowTime()
+        }
+
         // 对接接口
         MyOkHttpUtils().query(
             URL = SPUtils.getInstance()
@@ -60,8 +63,14 @@ class FutureManager {
             type = "1",
             callback = object : ResponseCallback<BaseResult<List<GoodsInfo>>>() {
                 override fun onResponse(response: BaseResult<List<GoodsInfo>>?, id: Int) {
+                    val goodsUpdateTime = GlobalDataCollection.instance?.goodsInfoUpdateTime
+                    val localGoodsUpdataTime =
+                        SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME)
+                    if (localGoodsUpdataTime != goodsUpdateTime) {
+                        SPUtils.getInstance().put(Constant.GOODS_UPDATE_TIME, goodsUpdateTime)
+                    }
                     //每次请求都把之前的数据清掉,不然会出现不存在的商品
-                    DataBase.getInstance().goodsInfoDao().clearAllData()
+//                    DataBase.getInstance().goodsInfoDao().clearAllData()
                     // 存储直接入库,需要的时候,再查询,检查方法的运行时间,10ms可以接受
                     DataBase.getInstance().goodsInfoDao().insertAll(response?.data)
 //                    Builder.getDatabase<AppDatabase>().goodsInfoDao.insertAll()

+ 120 - 0
RMA/app/src/main/java/cn/muchinfo/rma/business/money/MoneyManager.kt

@@ -23,6 +23,126 @@ import java.lang.Exception
 class MoneyManager {
 
     /**
+     * 出金请求
+     * @param AccountCode String 资金账户
+     * @param CusBankID String 托管银行编号
+     * @param Currency String 币种
+     * @param AccountType Int 账户类型
+     * @param BankChildAccount String 银行子账号
+     * @param BankChildAccountName String 银行子账号名
+     * @param OpenCardBankId String 银行卡行号
+     * @param BankAccoutNum String 银行卡号
+     * @param BankAccoutName String 银行卡户名
+     * @param Amount Double 出金金额
+     * @param AppDateTime String 申请日期和时间
+     * @param BranchBankName String 收款支行名称
+     * @param extend_info String 扩展信息(JSON串, 参考配置要求进行填充)
+     * @param ExchTicket String 交易所流水号
+     * @return Packet50
+     */
+    fun requeryt2bBankWithdrawReq(
+        AccountCode : String = "",
+        CusBankID : String = "",
+        Currency : String = "",
+        AccountType : Int = 0,
+        BankChildAccount : String = "",
+        BankChildAccountName : String = "",
+        OpenCardBankId : String = "",
+        BankAccoutNum : String = "",
+        BankAccoutName : String = "",
+        Amount : Double = 0.0,
+        AppDateTime : String = "",
+        BranchBankName : String = "",
+        extend_info : String = "",
+        ExchTicket : String = "",
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ){
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = MoneyAdapter.gett2bBankWithdrawReqInfo(
+             AccountCode, CusBankID, Currency, AccountType, BankChildAccount, BankChildAccountName, OpenCardBankId, BankAccoutNum, BankAccoutName, Amount, AppDateTime, BranchBankName, extend_info, ExchTicket
+        )
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.FID_t2bBankWithdrawRsp,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = MoneyAdapter.analysist2bBankWithdrawRsq(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+            }
+        )
+    }
+
+    /**
+     * 入金请求
+     * @param CusBankID String
+     * @param TradeDate String
+     * @param ExchTicket String
+     * @param AccountCode String
+     * @param BusinessNo String
+     * @param BankChildAccount String
+     * @param BankChildAccountName String
+     * @param Amount Double
+     * @param Currency String
+     * @param OpenCardBankId String
+     * @param BankAccoutNum String
+     * @param BankAccoutName String
+     * @param extend_info String
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun requeryT2bBankDepositReq(
+        CusBankID : String = "",//托管银行编号
+        TradeDate : String = "",//交易日
+        ExchTicket : String = "",//交易所流水号
+        AccountCode : String = "",///资金账户
+        BusinessNo : String = "",//银行业务编号
+        BankChildAccount : String = "",//银行子账号
+        BankChildAccountName : String = "",//银行子账号名
+        Amount : Double = 0.0,//金额
+        Currency : String = "",//币种
+        OpenCardBankId : String = "",//银行卡行号
+        BankAccoutNum : String = "",//银行卡号
+        BankAccoutName : String = "",//银行卡户名
+        extend_info : String = "",//扩展信息(JSON串, 参考配置要求进行填充)
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ){
+        val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {
+            callback(false, Error("交易链路未初始化"))
+            return
+        }
+
+        val reqPacket = MoneyAdapter.getT2bBankDepositReqInfo(
+            CusBankID, TradeDate, ExchTicket, AccountCode, BusinessNo, BankChildAccount, BankChildAccountName, Amount, Currency, OpenCardBankId, BankAccoutNum, BankAccoutName, extend_info
+        )
+
+        tradeSocketManager.send(
+            reqPacket,
+            FunCode.FID_t2bBankDepositRsp,
+            object : Callback<Packet50> {
+                override fun onSuccess(rsp: Packet50?) {
+                    val rst = MoneyAdapter.analysisT2bBankDepositRsq(rsp!!)
+                    callback(rst.first, rst.second)
+                }
+
+                override fun onFail(err: Error?) {
+                    // 发送数据失败
+                    callback(false, err)
+                }
+            }
+        )
+    }
+
+    /**
      * 余额支付请求
      * @param accountid Long
      * @param tradeID Long

+ 236 - 1
RMA/app/src/main/java/cn/muchinfo/rma/business/money/adapter/MoneyAdapter.kt

@@ -10,6 +10,7 @@ import cn.muchinfo.rma.protobuf.protoclasses.BankMI1
 import cn.muchinfo.rma.protobuf.protoclasses.ErmcpMI1
 import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI3
 import cn.muchinfo.rma.protobuf.protoclasses.TkernelMI1
+import com.blankj.utilcode.util.TimeUtils
 import com.google.common.math.IntMath
 import java.io.ByteArrayOutputStream
 import java.lang.Exception
@@ -17,11 +18,245 @@ import java.util.*
 
 object MoneyAdapter {
 
+    /**
+     * 出金报文装箱
+     * @param AccountCode String 资金账户
+     * @param CusBankID String 托管银行编号
+     * @param Currency String 币种
+     * @param AccountType Int 账户类型
+     * @param BankChildAccount String 银行子账号
+     * @param BankChildAccountName String 银行子账号名
+     * @param OpenCardBankId String 银行卡行号
+     * @param BankAccoutNum String 银行卡号
+     * @param BankAccoutName String 银行卡户名
+     * @param Amount Double 出金金额
+     * @param AppDateTime String 申请日期和时间
+     * @param BranchBankName String 收款支行名称
+     * @param extend_info String 扩展信息(JSON串, 参考配置要求进行填充)
+     * @param ExchTicket String 交易所流水号
+     * @return Packet50
+     */
+    fun gett2bBankWithdrawReqInfo(
+        AccountCode : String = "",
+        CusBankID : String = "",
+        Currency : String = "",
+        AccountType : Int = 0,
+        BankChildAccount : String = "",
+        BankChildAccountName : String = "",
+        OpenCardBankId : String = "",
+        BankAccoutNum : String = "",
+        BankAccoutName : String = "",
+        Amount : Double = 0.0,
+        AppDateTime : String = "",
+        BranchBankName : String = "",
+        extend_info : String = "",
+        ExchTicket : String = ""
+    ) : Packet50{
+        val builder = BankMI1.t2bBankWithdrawReq.newBuilder()
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
+
+        // FIXME: - 250000000005
+        builder.setHeader(
+            MessageHeadModel.getHead(
+                FunCode.FID_t2bBankWithdrawReq,
+                loginInfo.userID,
+                0,
+                0,
+                18
+            )
+        )
+        builder.extOperatorID = TimeUtils.getNowMills()//外部操作流水号
+        if (CusBankID.isNotEmpty()){
+            builder.cusBankID = CusBankID
+        }
+
+        builder.exchId = ""
+        if (ExchTicket.isNotEmpty()){
+            builder.exchTicket = ExchTicket
+        }
+        if (AccountCode.isNotEmpty()){
+            builder.accountCode = AccountCode
+        }
+       if (AccountType != 0){
+           builder.accountType = AccountType
+       }
+        if (BankChildAccount.isNotEmpty()){
+            builder.bankChildAccount = BankChildAccount
+        }
+        if (BankChildAccountName.isNotEmpty()){
+            builder.bankChildAccountName = BankChildAccountName
+        }
+        if (AppDateTime.isNotEmpty()){
+            builder.appDateTime = AppDateTime
+        }
+        if (BranchBankName.isNotEmpty()){
+            builder.branchBankName = BranchBankName
+        }
+        if (Amount != 0.0){
+            builder.amount = Amount
+        }
+        if (Currency.isNotEmpty()){
+            builder.currency = Currency
+        }
+        if (OpenCardBankId.isNotEmpty()){
+            builder.openCardBankId = OpenCardBankId
+        }
+        if (BankAccoutName.isNotEmpty()){
+            builder.bankAccoutName = BankAccoutName
+        }
+        if (BankAccoutNum.isNotEmpty()){
+            builder.bankAccoutNum = BankAccoutNum
+        }
+        if (extend_info.isNotEmpty()){
+            builder.extendInfo = extend_info
+        }
+        val arrayOutputStream = ByteArrayOutputStream();
+        builder.build().writeTo(arrayOutputStream)
+        return Packet50(FunCode.FID_t2bBankWithdrawReq, arrayOutputStream.toByteArray())
+    }
+
+
+    /**
+     * 出金请求报文解析
+     * @param packet50 Packet50
+     * @return Triple<Boolean, Error?, ErmcpMI1.SpotContractOperateRsp?>
+     */
+    fun analysist2bBankWithdrawRsq(packet50: Packet50): Triple<Boolean, Error?, BankMI1.t2bBankWithdrawRsp?> {
+        return try {
+            val resultRsp = BankMI1.t2bBankWithdrawRsp.parseFrom(packet50.content)
+            if (resultRsp.retCode == 0) {
+                // 操作成功
+                Triple(true, null, resultRsp)
+            }else if (resultRsp.retCode == -1){
+                // 操作失败
+                Triple(false, Error(resultRsp.retDesc), null)
+            } else {
+                // 操作失败
+                Triple(false, Error(ErrorMessageUtils.getErrorString(resultRsp.retCode)), null)
+            }
+        } catch (e: Exception) {
+            // 操作失败
+            Triple(false, Error("装箱失败"), null)
+        }
+    }
 
+    /**
+     * 入金
+     * @param CusBankID String
+     * @param ExchId String
+     * @param TradeDate String
+     * @param ExchTicket String
+     * @param AccountCode String
+     * @param BusinessNo String
+     * @param BankChildAccount String
+     * @param BankChildAccountName String
+     * @param Amount Double
+     * @param Currency String
+     * @param OpenCardBankId String
+     * @param BankAccoutNum String
+     * @param BankAccoutName String
+     * @param extend_info String
+     * @return Packet50
+     */
     fun getT2bBankDepositReqInfo(
+        CusBankID : String = "",//托管银行编号
+        TradeDate : String = "",//交易日
+        ExchTicket : String = "",//交易所流水号
+        AccountCode : String = "",///资金账户
+        BusinessNo : String = "",//银行业务编号
+        BankChildAccount : String = "",//银行子账号
+        BankChildAccountName : String = "",//银行子账号名
+        Amount : Double = 0.0,//金额
+        Currency : String = "",//币种
+        OpenCardBankId : String = "",//银行卡行号
+        BankAccoutNum : String = "",//银行卡号
+        BankAccoutName : String = "",//银行卡户名
+        extend_info : String = ""//扩展信息(JSON串, 参考配置要求进行填充)
+    ) : Packet50{
+        val builder = BankMI1.t2bBankDepositReq.newBuilder()
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
 
-    ){
+        // FIXME: - 250000000005
+        builder.setHeader(
+            MessageHeadModel.getHead(
+                FunCode.FID_t2bBankDepositReq,
+                loginInfo.userID,
+                0,
+                0,
+                18
+            )
+        )
+
+        builder.extOperatorID = TimeUtils.getNowMills()//外部操作流水号
+        if (CusBankID.isNotEmpty()){
+            builder.cusBankID = CusBankID
+        }
 
+        builder.exchId = ""
+        if(TradeDate.isNotEmpty()){
+            builder.tradeDate = TradeDate
+        }
+        if (ExchTicket.isNotEmpty()){
+            builder.exchTicket = ExchTicket
+        }
+        if (AccountCode.isNotEmpty()){
+            builder.accountCode = AccountCode
+        }
+        if (BusinessNo.isNotEmpty()){
+            builder.businessNo = BusinessNo
+        }
+        if (BankChildAccount.isNotEmpty()){
+            builder.bankChildAccount = BankChildAccount
+        }
+        if (BankChildAccountName.isNotEmpty()){
+            builder.bankChildAccountName = BankChildAccountName
+        }
+        if (Amount != 0.0){
+            builder.amount = Amount
+        }
+        if (Currency.isNotEmpty()){
+            builder.currency = Currency
+        }
+        if (OpenCardBankId.isNotEmpty()){
+            builder.openCardBankId = OpenCardBankId
+        }
+        if (BankAccoutName.isNotEmpty()){
+            builder.bankAccoutName = BankAccoutName
+        }
+        if (BankAccoutNum.isNotEmpty()){
+            builder.bankAccoutNum = BankAccoutNum
+        }
+        if (extend_info.isNotEmpty()){
+            builder.extendInfo = extend_info
+        }
+        val arrayOutputStream = ByteArrayOutputStream();
+        builder.build().writeTo(arrayOutputStream)
+        return Packet50(FunCode.FID_t2bBankDepositReq, arrayOutputStream.toByteArray())
+    }
+
+
+    /**
+     * 入金请求报文解析
+     * @param packet50 Packet50
+     * @return Triple<Boolean, Error?, ErmcpMI1.SpotContractOperateRsp?>
+     */
+    fun analysisT2bBankDepositRsq(packet50: Packet50): Triple<Boolean, Error?, BankMI1.t2bBankDepositRsp?> {
+        return try {
+            val resultRsp = BankMI1.t2bBankDepositRsp.parseFrom(packet50.content)
+            if (resultRsp.retCode == 0) {
+                // 操作成功
+                Triple(true, null, resultRsp)
+            }else if (resultRsp.retCode == -1){
+                // 操作失败
+                Triple(false, Error(resultRsp.retDesc), null)
+            } else {
+                // 操作失败
+                Triple(false, Error(ErrorMessageUtils.getErrorString(resultRsp.retCode)), null)
+            }
+        } catch (e: Exception) {
+            // 操作失败
+            Triple(false, Error("装箱失败"), null)
+        }
     }
 
 

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

@@ -182,6 +182,8 @@ open class AccountData(
         canUserAmount = 0.0
         rightsAndInterests = 0.0
         orderValue = 0.0
+        raisedAmount = 0.0
+        valueOfposition = 0.0
     }
 
 

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

@@ -16,6 +16,7 @@ data class PickGoodsData(
     val pickupgoodsstatus : String? = "",//状态 - 1:正常 2:停用 3:注销
     val pickupgoodsunitid : String? = "",//单位ID
     val preparedays : String? = "",//备货期(天)
+    val pickupratio : String? = "",//提货系数
     val remark : String? = "",//备注
     val updatetime : String? = ""//更新时间
 ) : Parcelable{
@@ -32,6 +33,7 @@ data class PickGoodsData(
         parcel.readString(),
         parcel.readString(),
         parcel.readString(),
+        parcel.readString(),
         parcel.readString()
     ) {
     }
@@ -48,6 +50,7 @@ data class PickGoodsData(
         parcel.writeString(pickupgoodsstatus)
         parcel.writeString(pickupgoodsunitid)
         parcel.writeString(preparedays)
+        parcel.writeString(pickupratio)
         parcel.writeString(remark)
         parcel.writeString(updatetime)
     }

+ 14 - 0
RMA/app/src/main/java/cn/muchinfo/rma/protobuf/funcode/FunCode.java

@@ -73,6 +73,20 @@ public class FunCode {
      */
     public static final int SpotContractOperateRsp = 1179654;
 
+    /**
+     * 资金变化通知
+     */
+    public static final int FID_MoneyChangedNtf = 131076;
+
+    /**
+     * 委托单成交通知
+     */
+    public static final int FID_OrderDealedNtf = 131081;
+
+    /**
+     * 头寸变化通知
+     */
+    public static final int FID_PosChangedNtf = 131075;
 
     //------------------------三期---------------------------------
     /// 现货合同操作请求(1179653)

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

@@ -276,7 +276,9 @@ class MainActivity : BaseActivity<MainViewModel>() {
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMessageEvent(messageEvent: MessageEvent) {
-
+        if (messageEvent.messageType == EventConstent.FID_MoneyChangedNtf){//服务给的资金账号变化通知
+            viewModel.getTaAccounts()
+        }
     }
 
 

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

@@ -27,6 +27,18 @@ class MainViewModel : BaseViewModel() {
 
     val isInitiaDataSuccess: MutableLiveData<Boolean> = MutableLiveData()
 
+    //查询资金账号信息
+    fun getTaAccounts(){
+        val params = mutableMapOf<String, String>().apply {
+            put("loginID", GlobalDataCollection.instance?.loginRsp?.loginID.toString())
+        }
+        MyApplication.getInstance()?.initializeManager?.getTaAccounts(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                GlobalDataCollection.instance?.accountDataList = respData
+            }
+        }
+    }
+
     /**
      * 初始化数据
      */

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

@@ -373,6 +373,15 @@ class MyApplication : BaseApplication() {
                     LogUtils.eTag("RAM_RC", String.format(" 用户离线通知:%d", FunCode.CustOfflineNtf))
                     exitApp()
                 }
+                FunCode.FID_MoneyChangedNtf ->{//资金变化通知
+                    EventBus.getDefault().post(MessageEvent(EventConstent.FID_MoneyChangedNtf))
+                }
+                FunCode.FID_OrderDealedNtf ->{//委托单成交通知
+                    EventBus.getDefault().post(MessageEvent(EventConstent.FID_OrderDealedNtf))
+                }
+                FunCode.FID_PosChangedNtf ->{//头寸变化通知
+                    EventBus.getDefault().post(MessageEvent(EventConstent.FID_PosChangedNtf))
+                }
             }
         }
 

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

@@ -10,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.125:8080/cfg?key=test_125"//李倩千海金
+        const val baseurl = "http://192.168.30.125:8080/cfg?key=test_125"//李倩千海金
 //      const val baseurl = "http://192.168.30.211:8080/cfg?key=test_211"// 瑶姐
 //          const val baseurl = "http://192.168.31.107:8080/cfg?key=test_107"// 瑶姐 千海金
 //    const val baseurl = "http://192.168.31.175:8080/cfg?key=test_175" // 8888  123123
@@ -18,7 +18,7 @@ object Constant {
 //    const val baseurl = "http://192.168.31.174:8080/cfg?key=test_174"// 邓工
 
 //     const val baseurl = "http://192.168.31.176:8080/cfg?key=test_176" // 9999  123123  黄老板千海金
-    const val baseurl = "http://192.168.31.171:8080/cfg?key=test_171" //
+//    const val baseurl = "http://192.168.31.171:8080/cfg?key=test_171" //
 //    const val baseurl = "http://192.168.21.71:8280/cfg?key=mtp_20"
 
     /**

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

@@ -121,6 +121,7 @@ class GoodsTradeViewModel : BaseViewModel() {
      */
     fun calculateMoney(){
         val accountData = GlobalDataCollection.instance?.accountData
+        accountData?.clearData()
         accountData?.setNormalData()
         canUseWorth.postValue(accountData?.canUserAmount.toString())
         allWorth.postValue(accountData?.rightsAndInterests.toString())

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

@@ -207,7 +207,7 @@ class PayActivity : BaseActivity<PayViewModel>() {
 //                            text = it?.payamount
 //                        }
 //                    }
-                    text = totalAmount
+                    text = "¥" + NumberUtils.roundNum(totalAmount,2)
                     textSizeAuto = 55
                     textColorInt = R.color.rma_red_color
                 }.lparams(wrapContent, wrapContent) {

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

@@ -10,6 +10,7 @@ import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.BankAccountSignData
 import cn.muchinfo.rma.global.data.UserCollectConfigData
+import cn.muchinfo.rma.global.database.DataBase
 import cn.muchinfo.rma.global.isBlankString
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
@@ -28,12 +29,19 @@ import cn.muchinfo.rma.view.base.platinumtreasure.activity.PlatinumCancellations
 import cn.muchinfo.rma.view.base.platinumtreasure.activity.PlatnumDealActivty
 import cn.muchinfo.rma.view.base.platinumtreasure.activity.PlatnumMoneyActivity
 import cn.muchinfo.rma.view.base.platinumtreasure.trade.PlatinumTradeActivity
+import cn.muchinfo.rma.view.eventbus.EventConstent
+import cn.muchinfo.rma.view.eventbus.MessageEvent
+import cn.muchinfo.rma.view.eventbus.QuoteMessageEvent
 import com.blankj.utilcode.util.ActivityUtils
+import com.blankj.utilcode.util.LogUtils
 import com.blankj.utilcode.util.ToastUtils
 
 import com.qmuiteam.qmui.kotlin.matchParent
 import mtp.polymer.com.autowidget.dialog.createLoadingDialog
 import mtp.polymer.com.autowidget.utils.bindTaskStatus
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
 import org.jetbrains.anko.*
 import org.jetbrains.anko.support.v4.UI
 
@@ -46,7 +54,35 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
         super.onResume()
         viewModel.queryUserCollectConfig()
         viewModel.initDataUsrAccount()
-        viewModel.resetAccountData()
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        EventBus.getDefault().unregister(this)
+    }
+
+    //通用的消息更新通知
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onMessageEvent(messageEvent : MessageEvent) {
+        if (messageEvent.messageType == EventConstent.USERACCOUNTCHANGE){//接到通知更新当前的资金账号
+            viewModel.getTaAccounts()
+        }else if (messageEvent.messageType == EventConstent.FID_MoneyChangedNtf){//资金账号变化通知
+            viewModel.getTaAccounts()
+        }
+    }
+
+    //行情推送通知
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onQuoteMessageEvent(quoteMessageEvent: QuoteMessageEvent) {
+        /** 行情推送过来的goodsid **/
+        quoteMessageEvent.goodsid.forEach { goodid ->
+            //找到相应商品信息
+            val goodsInfo =
+                GlobalDataCollection.instance?.contractTradePositionDataArrayList?.find { it.goodsid?.toInt() == goodid }
+           if (goodsInfo?.goodsid.isNullOrEmpty().not()){
+               viewModel.getTaAccounts()
+           }
+        }
     }
 
     override fun onCreateView(
@@ -54,7 +90,7 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
         container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View? {
-
+        EventBus.getDefault().register(this)
         return UI {
 
             verticalLayout {
@@ -188,7 +224,7 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
                             linearLayout {
                                 gravity = Gravity.CENTER_VERTICAL
                                 textView {
-                                    text = "资产(元)"
+                                    text = "资产(元)"
                                     textSizeAuto = 29
                                     textColorInt = R.color.rma_hint_text_color_ccc
                                 }.lparams(wrapContent, wrapContent) {
@@ -202,8 +238,11 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
                             }.lparams(matchParent, autoSize(60))
 
                             textView {
-                                viewModel.accountData.bindOptional(context) {
-                                    text = NumberUtils.roundNum(it?.balance ?: 0.0, 2)
+                                /**
+                                 * 净资产=总市值-融资额+余额;
+                                 */
+                                viewModel.usedAccountData.bindOptional(context){
+                                    text = NumberUtils.roundNum(NumberUtils.doubleDistortion(it?.valueOfposition?.minus(it.raisedAmount)?.plus(it.currentbalance).toString()),2)
                                 }
                                 textSizeAuto = 60
                                 textColorInt = R.color.rma_black_33
@@ -224,8 +263,14 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
                                         marginStart = autoSize(78)
                                     }
                                     textView {
-                                        viewModel.accountData.bindOptional(context) {
-                                            text = NumberUtils.roundNum(it?.balance ?: 0.0, 2)
+                                        /**
+                                         * 可用取期末余额
+                                         */
+                                        viewModel.usedAccountData.bindOptional(context) {
+                                            text = NumberUtils.roundNum(
+                                                NumberUtils.doubleDistortion(it?.currentbalance?.toString()),
+                                                2
+                                            )
                                         }
                                         textSizeAuto = 36
                                         textColorInt = R.color.rma_green_color
@@ -245,7 +290,12 @@ class SeaKingMainFragment : BaseFragment<SeaKingMainViewModel>() {
 
                                     }
                                     textView {
-                                        text = "35000.44"
+                                        viewModel.usedAccountData.bindOptional(context) {
+                                            text = NumberUtils.roundNum(
+                                                NumberUtils.doubleDistortion(it?.valueOfposition?.toString()),
+                                                2
+                                            )
+                                        }
                                         textSizeAuto = 36
                                         textColorInt = R.color.rma_red_color
                                     }.lparams(wrapContent, wrapContent) {

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

@@ -35,13 +35,33 @@ class SeaKingMainViewModel : BaseViewModel(){
     /**
      * 当前选择的资金账户
      */
-    val accountData : MutableLiveData<AccountData> = MutableLiveData()
+    val usedAccountData : MutableLiveData<AccountData> = MutableLiveData()
 
     //重新赋值资金账户
     fun resetAccountData(){
-        accountData.postValue(GlobalDataCollection.instance?.accountData)
+        val accountDataList = GlobalDataCollection.instance?.accountDataList
+        if (accountDataList.isNullOrEmpty().not()) {
+            val accountData = GlobalDataCollection.instance?.accountData
+            accountData?.clearData()
+            accountData?.setNormalData()
+            usedAccountData.postValue(accountData)
+        }
     }
 
+    //查询资金账号信息
+    fun getTaAccounts(){
+        val params = mutableMapOf<String, String>().apply {
+            put("loginID", GlobalDataCollection.instance?.loginRsp?.loginID.toString())
+        }
+        MyApplication.getInstance()?.initializeManager?.getTaAccounts(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                GlobalDataCollection.instance?.accountDataList = respData
+                resetAccountData()
+            }
+        }
+    }
+
+
 
     fun customerRefernumOperateReq(isSuccess: (isCompleted: Boolean) -> Unit){
         loadingDialogStatus.value = TaskUiModel.inFlight()

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

@@ -221,7 +221,7 @@ class AddCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
                 imageView {
                     onThrottleFirstClick {
                         val selectDataList = arrayListOf(
-                            SelectData(id = "1", value = "按克数定投"),
+                            SelectData(id = "1", value = "按重量定投"),
                             SelectData(id = "2", value = "按金额定投")
                         )
                         creatBottomSheetDialog("请选择方式", selectDataList) {
@@ -257,7 +257,7 @@ class AddCastSurelyActivity : BaseActivity<MyCastSurelyViewModel>() {
                             }
                             selectPayType.bindOptional(context) {
                                 if (it?.id == "1") {//按克数定投
-                                    hint = "请输入定投克数"
+                                    hint = "请输入定投重量"
                                 } else if (it?.id == "2") {//按金额定投
                                     hint = "请输入定投金额"
                                 }

+ 1 - 5
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/castsurely/MyCastSurelyViewModel.kt

@@ -109,10 +109,6 @@ class MyCastSurelyViewModel : BaseViewModel(){
                 returnValue = "4"
             }else if (value == "周五"){
                 returnValue = "5"
-            }else if (value == "周六"){
-                returnValue = "6"
-            }else if (value == "周日"){
-                returnValue = "0"
             }
         }
         return returnValue
@@ -124,7 +120,7 @@ class MyCastSurelyViewModel : BaseViewModel(){
         val c1List  = arrayListOf<JsonBean.CityBean>()//月的子数据
         val jsonBean2 = JsonBean()//周的数据组装
         val c2List  = arrayListOf<JsonBean.CityBean>()//周的子数据
-        val jsonBean1SonString = arrayListOf("周一","周二","周三","周四","周五","周六","周日")
+        val jsonBean1SonString = arrayListOf("周一","周二","周三","周四","周五")
         val jsonBean2SonString = arrayListOf("1号","2号","3号","4号","5号","6号","7号","8号","9号","10号","11号","12号","13号","14号","15号","16号","17号","18号","19号","20号","21号","22号","23号","24号","25号","26号","27号","28号")
         jsonBean1.autoId = "1"
         jsonBean1.name = "每周一次"

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

@@ -31,7 +31,7 @@ class PickUpGoodViewHolder(private val activity : AppCompatActivity,private val
                 gravity = Gravity.CENTER_VERTICAL
                 imageView {
                     data.bindOptional(context){
-                        showImage(SPUtils.getInstance().getString(Constant.uploadUrl) + it?.imageaddress)
+                        showImage(SPUtils.getInstance().getString(Constant.openApiUrl) + it?.imageaddress)
                     }
                 }.lparams(autoSize(96), autoSize(96)){
                     marginStart = autoSize(36)
@@ -51,7 +51,7 @@ class PickUpGoodViewHolder(private val activity : AppCompatActivity,private val
 
                     textView {
                         data.bindOptional(context){
-                            text = "1:" + it?.pickupgoodsagreeunit + "  兑换"
+                            text = "兑换系数 :" + it?.pickupratio
                         }
                         textSizeAuto = 31
                         textColorInt = R.color.rma_gray_color

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

@@ -190,7 +190,7 @@ class PickUpGoodsActivity : BaseActivity<PickUpGoodsViewModel>(){
                         textView {
                             viewModel.pickGoodsData.bindOptional(context){
                                 val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(data?.goodsid?.toInt() ?: 0)
-                                val qry = data.enableqty?.toDouble()?.div(Math.pow(10.0,goodsInfo.qtydecimalplace?.toDouble()))?.div(it?.pickupgoodsagreeunit?.toInt() ?: 1)?.times(100.0)?.toInt()?.div(100)
+                                val qry = data.enableqty?.toDouble()?.div(Math.pow(10.0,goodsInfo.qtydecimalplace.toDouble()))?.div(it?.pickupgoodsagreeunit?.toInt() ?: 1)?.div(it?.pickupratio?.toDouble() ?: 1.0)?.times(100.0)?.toInt()?.div(100)
                                 canPickUpMaxNumber.postValue(qry)
                                 text = "可提货数量" + qry + ",需要" + qry?.times(it?.pickupgoodsagreeunit?.toInt() ?: 1) + "g" + data.goodsname
                             }

+ 6 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithDrawManagementActivity.kt

@@ -19,6 +19,8 @@ import com.blankj.utilcode.util.TimeUtils
 import com.blankj.utilcode.util.ToastUtils
 import mtp.polymer.com.autowidget.dialog.SelectData
 import mtp.polymer.com.autowidget.dialog.creatBottomSheetNoTitleDialog
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 
 /**
@@ -38,6 +40,10 @@ class WithDrawManagementActivity : BaseActivity<WithDrawManagementViewModel>() {
         super.onCreate(savedInstanceState)
         verticalLayout {
             viewModel.queryCusBankSignBank()
+            createLoadingDialog(hintStr = "请求中...").bindTaskStatus(
+                context,
+                viewModel.loadingDialogStatus
+            )
             viewModel.userCollectConfigData.postValue(data)
             background = resources.getDrawable(R.color.rma_item_bg)
             //页面标题

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

@@ -13,6 +13,7 @@ import androidx.lifecycle.MutableLiveData
 import androidx.viewpager.widget.PagerAdapter
 import androidx.viewpager.widget.ViewPager
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.MTPEnums
 import cn.muchinfo.rma.global.data.UserCollectConfigData
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.netManage.base.InteractiveException
@@ -48,6 +49,7 @@ import org.json.JSONArray
 import org.json.JSONException
 import org.json.JSONObject
 import java.io.File
+import kotlin.math.sin
 
 
 /**
@@ -110,6 +112,7 @@ class WithdrawalActivity : BaseActivity<WithdrawalViewModel>(){
             createLoadingDialog(hintStr = "").bindTaskStatus(context, viewModel.loadingDialogStatus)
             initDataTitle()
             viewModel.queryUserCollectConfig()
+            viewModel.queryUsersigningInfo()
             background = resources.getDrawable(R.color.rma_item_bg)
             //页面标题
             topBar {
@@ -663,7 +666,7 @@ class MoneyInOutlineUI(private val activity: WithdrawalActivity,private val view
 
                 editText {
                     gravity = Gravity.CENTER_VERTICAL
-                    isEnabled = false
+//                    isEnabled = false
                     amount_input = this
                     hint = "请填写充值金额"
                     background = null
@@ -809,7 +812,30 @@ class MoneyInOutlineUI(private val activity: WithdrawalActivity,private val view
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     onThrottleFirstClick {
-                        ToastUtils.showLong(viewModel.userCollectConfigDataList.value?.get(selectCardType.value ?: 0)?.collectconfigid)
+                        if (amount_input.text.toString().isNullOrEmpty()){
+                            ToastUtils.showLong("请输入充值金额")
+                            return@onThrottleFirstClick
+                        }
+                        if (uploadFile.isNullOrEmpty()){
+                            ToastUtils.showLong("请上传充值凭证")
+                            return@onThrottleFirstClick
+                        }
+                        if (viewModel.userCollectConfigData.value?.accountcode.isNullOrEmpty()){
+                            ToastUtils.showLong("签约信息获取失败,请稍后再试!")
+                            return@onThrottleFirstClick
+                        }
+                        val singingInfo = viewModel.userCollectConfigData.value
+                        viewModel.requeryT2bBankDepositReq(
+                            AccountCode = singingInfo?.accountcode ?: "",
+                            Currency = singingInfo?.currency ?: "",
+                            CusBankID = singingInfo?.cusbankid ?: "",
+                            BankAccoutName = singingInfo?.accountname ?: "",
+                            BankAccoutNum = singingInfo?.bankaccountno ?: "",
+                            Amount = amount_input.text.toString().toDouble(),
+                            extend_info = getJSONExtendInfo(uploadFile) ?: ""
+                        ){
+                            ToastUtils.showLong("充值成功")
+                        }
                     }
                     gravity = Gravity.CENTER
                     backgroundResource = R.mipmap.rma_submit_bg
@@ -826,6 +852,20 @@ class MoneyInOutlineUI(private val activity: WithdrawalActivity,private val view
             }
 
         }
+
+
+    }
+
+    /**
+     * 组装扩展信息
+     *
+     * @return
+     */
+    fun getJSONExtendInfo(url : String): String? {
+        val json = JSONObject()
+        json.put("sex", MTPEnums.SEX_FEMALE)
+        json.put("certificate_photo_url",url)
+        return json.toString()
     }
 
 }

+ 147 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/main/withdrawmanagement/WithdrawalViewModel.kt

@@ -2,6 +2,7 @@ package cn.muchinfo.rma.view.base.main.withdrawmanagement
 
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.BankAccountSignData
 import cn.muchinfo.rma.global.data.UserCollectConfigData
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MyApplication
@@ -12,6 +13,8 @@ import com.blankj.utilcode.util.SPUtils
 import com.blankj.utilcode.util.ToastUtils
 import com.zhy.http.okhttp.OkHttpUtils
 import com.zhy.http.okhttp.callback.StringCallback
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
 import mtp.polymer.com.autowidget.utils.TaskUiModel
 import okhttp3.Call
 import okhttp3.MediaType
@@ -32,6 +35,28 @@ class WithdrawalViewModel : BaseViewModel(){
     val userCollectConfigDataList : MutableLiveData<List<UserCollectConfigData>> = MutableLiveData()
 
     /**
+     * 签约信息
+     */
+    val userCollectConfigData : MutableLiveData<BankAccountSignData> = MutableLiveData()
+
+    /**
+     * 查询提现账户设置信息
+     */
+    fun queryUsersigningInfo(){
+        val params = mutableMapOf<String,String>().apply {
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
+        }
+
+        MyApplication.getInstance()?.bankManager?.queryBankAccountSign(params = params){ isSuccess, respData, error ->
+            if (isSuccess){
+                if (respData?.size ?: 0 > 0){
+                    userCollectConfigData.postValue(respData?.find { it?.signstatus == "4" })
+                }
+            }
+        }
+    }
+
+    /**
      * 查询提现账户设置
      */
     fun queryUserCollectConfig(){
@@ -47,6 +72,128 @@ class WithdrawalViewModel : BaseViewModel(){
     }
 
 
+
+    /**
+     * 出金请求
+     */
+    fun requeryt2bBankWithdrawReq(
+        AccountCode : String = "",
+        CusBankID : String = "",
+        Currency : String = "",
+        AccountType : Int = 0,
+        BankChildAccount : String = "",
+        BankChildAccountName : String = "",
+        OpenCardBankId : String = "",
+        BankAccoutNum : String = "",
+        BankAccoutName : String = "",
+        Amount : Double = 0.0,
+        AppDateTime : String = "",
+        BranchBankName : String = "",
+        extend_info : String = "",
+        ExchTicket : String = "",
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.moneyManager?.requeryt2bBankWithdrawReq(
+                CusBankID = CusBankID,
+                AccountType = AccountType,
+                ExchTicket = ExchTicket,
+                AccountCode = AccountCode,
+                AppDateTime = AppDateTime,
+                BranchBankName = BranchBankName,
+                BankChildAccount = BankChildAccount,
+                BankChildAccountName =BankChildAccountName,
+                Amount = Amount,
+                Currency = Currency,
+                OpenCardBankId = OpenCardBankId,
+                BankAccoutNum = BankAccoutNum,
+                BankAccoutName = BankAccoutName,
+                extend_info = extend_info
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+    /**
+     * 入金请求
+     * @param CusBankID String
+     * @param TradeDate String
+     * @param ExchTicket String
+     * @param AccountCode String
+     * @param BusinessNo String
+     * @param BankChildAccount String
+     * @param BankChildAccountName String
+     * @param Amount Double
+     * @param Currency String
+     * @param OpenCardBankId String
+     * @param BankAccoutNum String
+     * @param BankAccoutName String
+     * @param extend_info String
+     * @param isSuccess Function1<[@kotlin.ParameterName] Boolean, Unit>
+     */
+    fun requeryT2bBankDepositReq(
+        CusBankID : String = "",//托管银行编号
+        TradeDate : String = "",//交易日
+        ExchTicket : String = "",//交易所流水号
+        AccountCode : String = "",///资金账户
+        BusinessNo : String = "",//银行业务编号
+        BankChildAccount : String = "",//银行子账号
+        BankChildAccountName : String = "",//银行子账号名
+        Amount : Double = 0.0,//金额
+        Currency : String = "",//币种
+        OpenCardBankId : String = "",//银行卡行号
+        BankAccoutNum : String = "",//银行卡号
+        BankAccoutName : String = "",//银行卡户名
+        extend_info : String = "",//扩展信息(JSON串, 参考配置要求进行填充)
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.moneyManager?.requeryT2bBankDepositReq(
+                CusBankID = CusBankID,
+                TradeDate = TradeDate,
+                ExchTicket = ExchTicket,
+                AccountCode = AccountCode,
+                BusinessNo = BusinessNo,
+                BankChildAccount = BankChildAccount,
+                BankChildAccountName =BankChildAccountName,
+                Amount = Amount,
+                Currency = Currency,
+                OpenCardBankId = OpenCardBankId,
+                BankAccoutNum = BankAccoutNum,
+                BankAccoutName = BankAccoutName,
+                extend_info = extend_info
+            ) { isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
+
     val payInfoRequest : MutableLiveData<String> = MutableLiveData()
     fun getPayInfo(marketId: String = "", orderNo: String = "", orderDate: String = "", totalAmount: String, msgType: String,payType : String) {//从后台获取支付信息
         loadingDialogStatus.postValue(TaskUiModel.inFlight())

+ 13 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/adapter/PlatnumTreasureAdapter.java

@@ -25,6 +25,7 @@ import java.util.List;
 import cn.muchinfo.rma.R;
 import cn.muchinfo.rma.global.GlobalDataCollection;
 import cn.muchinfo.rma.global.data.ContractData;
+import cn.muchinfo.rma.global.data.ContractTradePositionData;
 import cn.muchinfo.rma.global.data.GoodsInfoAndQuotes;
 import cn.muchinfo.rma.global.data.QuoteDayData;
 import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo;
@@ -158,8 +159,18 @@ public class PlatnumTreasureAdapter extends RecyclerView.Adapter<PlatnumTreasure
                 riseFallData.setColorType("1");
             }
         }
-
-
+        ContractTradePositionData positionData = null;
+        List<ContractTradePositionData> positionDataList = GlobalDataCollection.Companion.getInstance().getContractTradePositionDataArrayList();
+        for (int j = 0;j < positionDataList.size();j++){
+            if (String.valueOf(data.getGoodsid()).equals(positionDataList.get(j).getGoodsid())){
+                positionData = positionDataList.get(j);
+            }
+        }
+        if (positionData == null){
+            itemViewHolder.platnum_sell.setVisibility(View.GONE);
+        }else {
+            itemViewHolder.platnum_sell.setVisibility(View.VISIBLE);
+        }
         qhjRightScrollAdapter.setDatas(rightData);
         itemViewHolder.rvItemRight.setAdapter(qhjRightScrollAdapter);
         //缓存当前holder

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

@@ -71,7 +71,7 @@ class CancellationsViewHolder(private val activity: AppCompatActivity,private va
                     textView {
                         data.bindOptional(context){
                             val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(it?.goodsid?.toInt() ?: 0)
-                            text = NumberUtils.roundNum(it?.orderqty?.toDouble()?.div(Math.pow(10.0, goodsInfo.qtydecimalplace.toDouble()))?.toString(),0)
+                            text = NumberUtils.doubleDistortion(it?.orderqty?.toDouble()?.div(Math.pow(10.0, goodsInfo.qtydecimalplace.toDouble()))?.toString())
                         }
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
@@ -89,12 +89,14 @@ class CancellationsViewHolder(private val activity: AppCompatActivity,private va
                             data.bindOptional(context){
                                 if (it?.buyorsell == "0"){
                                     text = "买入"
+                                    textColorInt = R.color.rma_red_color
                                 }else if (it?.buyorsell == "1"){
                                     text = "卖出"
+                                    textColorInt = R.color.rma_green_color
                                 }
                             }
                             textSizeAuto = 31
-                            textColorInt = R.color.rma_red_color
+
                         }.lparams(wrapContent, wrapContent){
                             topMargin = autoSize(25)
                         }

+ 1 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/DealViewHolder.kt

@@ -74,7 +74,7 @@ class DealViewHolder(private val activity : AppCompatActivity,private val viewMo
                 textView {
                     data.bindOptional(context){
                              val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(it?.goodsid?.toInt() ?: 0)
-                             text = NumberUtils.roundNum(it?.tradeqty?.toDouble()?.div(Math.pow(10.0,goodsInfo.qtydecimalplace.toDouble())).toString(),0)
+                             text = NumberUtils.doubleDistortion(it?.tradeqty?.toDouble()?.div(Math.pow(10.0,goodsInfo.qtydecimalplace.toDouble())).toString())
                         }
                     textSizeAuto = 31
                     textColorInt = R.color.rma_black_33

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/NoPayViewHolder.kt

@@ -86,7 +86,7 @@ class NoPayViewHolder(private val activity : AppCompatActivity,private val viewM
                     textView {
                          data.bindOptional(context){
                              val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(it?.goodsid?.toInt() ?: 0)
-                             text = NumberUtils.roundNum(it?.tradeqty?.toDouble()?.div(Math.pow(10.0,goodsInfo.qtydecimalplace?.toDouble())).toString(),0)
+                             text = NumberUtils.doubleDistortion(it?.tradeqty?.toDouble()?.div(Math.pow(10.0,goodsInfo.qtydecimalplace?.toDouble())).toString()) + goodsInfo
                         }
                         textSizeAuto = 31
                         textColorInt = R.color.rma_black_33
@@ -102,7 +102,7 @@ class NoPayViewHolder(private val activity : AppCompatActivity,private val viewM
                             text = NumberUtils.roundNum(it?.payamount,2)
                         }
                         textSizeAuto = 31
-                        textColorInt = R.color.rma_red_color
+                        textColorInt = R.color.rma_black_33
                     }.lparams(wrapContent, wrapContent){
                         topMargin = autoSize(30)
                     }
@@ -113,7 +113,7 @@ class NoPayViewHolder(private val activity : AppCompatActivity,private val viewM
                     textView {
                         data.bindOptional(context){
                             if (it?.operatetype == "1"){
-                                text = "正常下单"
+                                text = "买入"
                             }else if (it?.operatetype == "16"){
                                 text = "融资买入"
                             }

+ 14 - 32
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumBuyOrSellUI.kt

@@ -107,40 +107,22 @@ class PlatinumBuyOrSellUI(
         viewModel.queryGoodsEx(goodsid = goodsId)
     }
 
-    //行情推送通知
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    fun onQuoteMessageEvent(quoteMessageEvent: QuoteMessageEvent) {
-        val goodsids = quoteMessageEvent.goodsid
-
-        //如果推送的goodsid包含当前页面的goodsid,则进行页面刷新
-        if (goodsids.contains(goodsId?.toInt())) {
-            LogUtils.eTag("dasjhdkjagfkask", "行情推送" + goodsId)
+    //刷新单据
+    fun refresh(quoteMessageEvent: QuoteMessageEvent){
+        /** 行情推送过来的goodsid **/
+        quoteMessageEvent.goodsid.forEach { goodid ->
+            //找到相应商品信息
             val goodsInfo =
-                DataBase.getInstance().goodsInfoDao().getGoodsInfo(goodsId?.toInt() ?: 0)
-            val quote =
-                GlobalDataCollection.instance?.goodsInfoAndQuotesList?.find { goodsInfo?.outgoodscode == it.outgoodscode }?.quoteDayData
-            LogUtils.eTag(
-                "dasjhdkjagfkaskgoodsid = ",
-                "goodsid = " + goodsId + "bid = " + quote?.bid + " ask = " + quote?.ask
-            )
-            if (quote != null) {
-                viewModel.quoteDayData.postValue(quote)
-            }
-        } else {
-            /** 行情推送过来的goodsid **/
-            quoteMessageEvent.goodsid.forEach { goodid ->
-                //找到相应商品信息
-                val goodsInfo =
-                    viewModel.buyOrSellTradePositionDataList.value?.find { it.goodsid?.toInt() == goodid }
-                viewModel.buyOrSellTradePositionDataList.value?.indexOf(goodsInfo)?.let {
-                    if (it != -1) {//刷新相应item
-                        positionAdapter.notifyItemChanged(it)
-                    }
+                viewModel.buyOrSellTradePositionDataList.value?.find { it.goodsid?.toInt() == goodid }
+            viewModel.buyOrSellTradePositionDataList.value?.indexOf(goodsInfo)?.let {
+                if (it != -1) {//刷新相应item
+                    positionAdapter.notifyItemChanged(it)
                 }
             }
         }
     }
 
+
     //持仓单点击消息通知
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMeesageChangeTradeId(tradeMessageEvent: TradeMessageEvent) {
@@ -239,7 +221,6 @@ class PlatinumBuyOrSellUI(
 //
 //                                }
                                 if (data?.goodscode?.isNotEmpty() == true) {
-                                    setDecimal(data?.decimalplace ?: 2)
                                     val limitRangeMin = if (data?.decimalplace == 0) {
                                         1.0
                                     } else {
@@ -250,6 +231,7 @@ class PlatinumBuyOrSellUI(
                                     setMax(limitRangeMax)
                                     setMin(limitRangeMin)
                                     setStep(Math.pow(10.0, -data.decimalplace.toDouble()))
+                                    setDecimal(data?.decimalplace ?: 2)
                                 }
 
                             }
@@ -332,9 +314,9 @@ class PlatinumBuyOrSellUI(
                                     GlobalDataCollection.instance?.goodsExInfoDataArrayList?.find { it.goodsid == data?.goodsid.toString() }
                                 if (goodsExData?.goodsid?.isNotEmpty() == true) {
                                     if (selectPayType.value?.id == "1") {//按数量
-                                        setMin(goodsExData.regularlybuyminqty?.toDouble() ?: 0.0)
-                                        setStep(goodsExData.regularlybuyminqty?.toDouble() ?: 0.01)
-                                        setText(goodsExData.regularlybuyminqty)
+                                        setMin(goodsExData.regularlybuyminqty?.toDouble()?.div(Math.pow(10.0,data?.qtydecimalplace?.toDouble() ?: 2.0)) ?: 0.0)
+                                        setStep(goodsExData.regularlybuyminqty?.toDouble()?.div(Math.pow(10.0,data?.qtydecimalplace?.toDouble() ?: 2.0)) ?: 0.01)
+                                        setText(goodsExData.regularlybuyminqty?.toDouble()?.div(Math.pow(10.0,data?.qtydecimalplace?.toDouble() ?: 2.0)).toString())
                                     } else {//按金额
                                         setMin(goodsExData.regularlybuyminamount?.toDouble() ?: 0.0)
                                         setStep(

+ 23 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumCancellationsUI.kt

@@ -7,7 +7,9 @@ import androidx.appcompat.app.AppCompatActivity
 import androidx.viewpager.widget.PagerAdapter
 import androidx.viewpager.widget.ViewPager
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.ContractTradeOrderDetailData
+import cn.muchinfo.rma.global.database.DataBase
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import com.blankj.utilcode.util.ConvertUtils
@@ -15,6 +17,8 @@ import com.qmuiteam.qmui.util.QMUIDisplayHelper
 import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
 import com.qmuiteam.qmui.widget.tab.QMUITabSegment
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
+import mtp.polymer.com.autowidget.dialog.createWarningDialog
+import mtp.polymer.com.autowidget.utils.TaskUiModel
 import org.jetbrains.anko.*
 import org.jetbrains.anko.support.v4.viewPager
 
@@ -265,7 +269,26 @@ class CanRemoveUI(
                     gravity = Gravity.CENTER_VERTICAL
                     textView {
                         onThrottleFirstClick {
+                            activity.createWarningDialog {
+                                setTitle("温馨提示")
+                                setMessage("确定要撤销全部吗?")
+                                addAction("取消") { dialog, _ ->
+                                    dialog.dismiss()
+                                }
+                                addAction("确定") { dialog, _ ->
+                                    viewModel.tradeOrderDetailDatalist?.value?.forEach {
+                                        val goodsInfo = DataBase.getInstance().goodsInfoDao().getGoodsInfo(it.goodsid?.toInt() ?: 0)
+                                        viewModel.cancelOrder(marketid = goodsInfo.marketid,goodsid = goodsInfo.goodsid,accountid = GlobalDataCollection.instance?.accountId ?: 0,oldOrderId = it?.orderid?.toLong() ?: 0){
+                                            viewModel.queryContractTradeOrderDetail()
+                                        }
+                                    }
+                                    viewModel.loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                                    dialog.dismiss()
+                                }
+                            }.show()
+                            viewModel.tradeOrderDetailDatalist?.value?.forEach {
 
+                            }
                         }
                         gravity = Gravity.CENTER
                         backgroundResource = R.mipmap.rma_submit_bg

+ 13 - 7
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumMoneyUI.kt

@@ -125,6 +125,7 @@ class PlatinumMoneyUI(private val activity: PlatinumTradeActivity,private val vi
  */
 class MoneyInfoUI(private val activity: AppCompatActivity,private val viewModel: PlatinumTradeViewModel){
 
+
     val root = _FrameLayout(activity).apply {
         verticalLayout {
             linearLayout {
@@ -202,6 +203,11 @@ class MoneyInfoUI(private val activity: AppCompatActivity,private val viewModel:
             itemView()
 
             linearLayout {
+                if (GlobalDataCollection.instance?.loginQueryData?.userInfo?.userinfotype == 1){
+                    visibility = View.GONE
+                }else{
+                    visibility = View.VISIBLE
+                }
                 gravity = Gravity.CENTER_VERTICAL
                 textView {
                     gravity = Gravity.LEFT
@@ -237,12 +243,10 @@ class MoneyInfoUI(private val activity: AppCompatActivity,private val viewModel:
 
                 textView {
                     /**
-                     * 余额=可用+冻结;
+                     * 可用取期末余额
                      */
                     viewModel.usedAccountData.bindOptional(context){
-                        val freezeAmount = it?.freezemargin?.plus(it.otherfreezemargin)?.plus(it.freezecharge)?.plus(it.outamountfreeze)//冻结金额
-                        val balance = it?.currentbalance?.plus(freezeAmount ?: 0.0)//
-                        text = NumberUtils.roundNum(NumberUtils.doubleDistortion(balance?.toString()),2)
+                        text = NumberUtils.roundNum(NumberUtils.doubleDistortion(it?.currentbalance?.toString()),2)
                     }
                     textSizeAuto = 36
                     textColorInt = R.color.rma_black_33
@@ -265,10 +269,12 @@ class MoneyInfoUI(private val activity: AppCompatActivity,private val viewModel:
 
                 textView {
                     /**
-                     * 可用取期末余额
+                     * 余额=可用+冻结;
                      */
-                     viewModel.usedAccountData.bindOptional(context){
-                        text = NumberUtils.roundNum(NumberUtils.doubleDistortion(it?.currentbalance?.toString()),2)
+                    viewModel.usedAccountData.bindOptional(context){
+                        val freezeAmount = it?.freezemargin?.plus(it.otherfreezemargin)?.plus(it.freezecharge)?.plus(it.outamountfreeze)//冻结金额
+                        val balance = it?.currentbalance?.minus(freezeAmount ?: 0.0)//
+                        text = NumberUtils.roundNum(NumberUtils.doubleDistortion(balance?.toString()),2)
                     }
                     textSizeAuto = 36
                     textColorInt = R.color.rma_black_33

+ 21 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumPositionUI.kt

@@ -11,6 +11,7 @@ import cn.muchinfo.rma.global.data.ContractTradePositionData
 import cn.muchinfo.rma.global.data.QhjContractDetailsData
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.eventbus.QuoteMessageEvent
 import com.blankj.utilcode.util.ConvertUtils
 import com.qmuiteam.qmui.util.QMUIDisplayHelper
 import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
@@ -76,6 +77,11 @@ class PlatinumPositionUI(private val activity: PlatinumTradeActivity,private val
         }
     }
 
+    //刷新单据
+    fun refresh(quoteMessageEvent: QuoteMessageEvent){
+        positionUI.refresh(quoteMessageEvent)
+    }
+
     val root = _FrameLayout(activity).apply {
         verticalLayout {
             initDataTitle()
@@ -122,6 +128,21 @@ class PositionUI(private val activity: PlatinumTradeActivity,private val viewMod
     private lateinit var swipeToLayout: SwipeToLoadLayout
     private lateinit var statusLayout: StatusLayout
 
+
+    //刷新单据
+    fun refresh(quoteMessageEvent: QuoteMessageEvent){
+        /** 行情推送过来的goodsid **/
+        quoteMessageEvent.goodsid.forEach { goodid ->
+            //找到相应商品信息
+            val goodsInfo =
+                viewModel.buyOrSellTradePositionDataList.value?.find { it.goodsid?.toInt() == goodid }
+            viewModel.buyOrSellTradePositionDataList.value?.indexOf(goodsInfo)?.let {
+                if (it != -1) {//刷新相应item
+                    positionAdapter.notifyItemChanged(it)
+                }
+            }
+        }
+    }
     /**
      * 持仓汇总
      */

+ 10 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumTradeActivity.kt

@@ -164,6 +164,14 @@ class PlatinumTradeActivity : BaseActivity<PlatinumTradeViewModel>(){
                 viewModel.quoteDayData.postValue(quote)
             }
         }
+        if (selectedTabIndex == 0){
+            platinumBuyUI.refresh(quoteMessageEvent)
+        }else if (selectedTabIndex == 1){
+            platinumSellUI.refresh(quoteMessageEvent)
+        }else if (selectedTabIndex == 3){
+            platinumPositionUI.refresh(quoteMessageEvent)
+        }
+        viewModel.getTaAccounts()
     }
 
     //通用的消息更新通知
@@ -171,6 +179,8 @@ class PlatinumTradeActivity : BaseActivity<PlatinumTradeViewModel>(){
     fun onMessageEvent(messageEvent : MessageEvent) {
         if (messageEvent.messageType == EventConstent.USERACCOUNTCHANGE){//接到通知更新当前的资金账号
             viewModel.initAccountData()
+        }else if (messageEvent.messageType == EventConstent.FID_MoneyChangedNtf || messageEvent.messageType == EventConstent.FID_OrderDealedNtf){//资金账号变化通知
+            viewModel.getTaAccounts()
         }
     }
 

+ 16 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PlatinumTradeViewModel.kt

@@ -92,6 +92,19 @@ class PlatinumTradeViewModel : BaseViewModel() {
      */
     val costList : MutableLiveData<List<AmountLogData>> = MutableLiveData()
 
+    //查询资金账号信息
+    fun getTaAccounts(){
+        val params = mutableMapOf<String, String>().apply {
+            put("loginID", GlobalDataCollection.instance?.loginRsp?.loginID.toString())
+        }
+        MyApplication.getInstance()?.initializeManager?.getTaAccounts(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                GlobalDataCollection.instance?.accountDataList = respData
+                initAccountData()
+            }
+        }
+    }
+
     /**
      * 查询资金流水
      */
@@ -570,10 +583,12 @@ class PlatinumTradeViewModel : BaseViewModel() {
 
         val orderData = OrderData()
         orderData.accountID = GlobalDataCollection.instance?.accountId?.toLong() ?: 0
-        orderData.buildType = MTPEnums.BUILDTYPE_OPEN// 建仓
+
         if (type == "1" || type == "3") {
+            orderData.buildType = MTPEnums.BUILDTYPE_OPEN// 建仓
             orderData.buyOrSell = MTPEnums.DIRECTION_BUY// 买入
         } else {
+            orderData.buildType = MTPEnums.BUILDTYPE_CLOSE// 平仓
             orderData.buyOrSell = MTPEnums.DIRECTION_SALE// 卖出
         }
 

+ 13 - 5
RMA/app/src/main/java/cn/muchinfo/rma/view/base/platinumtreasure/trade/PositionViewHolder.kt

@@ -81,7 +81,6 @@ class PositionViewHolder(
                                 ) ?: 0.0
                             ).toString()),2)
                         }
-
                         textSizeAuto = 29
                         textColorInt = R.color.rma_black_33
                     }.lparams(wrapContent, wrapContent) {
@@ -100,7 +99,7 @@ class PositionViewHolder(
                                 }?.quoteDayData
 
 
-                            val costPrice = NumberUtils.roundNum(it?.curholderamount?.toDouble()?.div(it?.curpositionqty?.toDouble()?.div(Math.pow(10.0,goodsInfoData?.qtydecimalplace?.toDouble() ?: 2.0)) ?: 1.0)?.div(goodsInfoData.agreeunit?.toDouble() ?: 1.0).toString(),0)
+                            val costPrice = NumberUtils.roundNum(it?.curholderamount?.toDouble()?.div(it?.curpositionqty?.toDouble()?.div(Math.pow(10.0,goodsInfoData?.qtydecimalplace?.toDouble() ?: 2.0)) ?: 1.0)?.div(goodsInfoData.agreeunit?.toDouble() ?: 1.0).toString(),goodsInfoData.decimalplace)
                             cost_price_text.text = costPrice//赋值成本价
                             var differencePrice = 0.0
 
@@ -215,9 +214,9 @@ class PositionViewHolder(
                                     data.outgoodscode == goodsInfoData.goodscode
                                 }?.quoteDayData
                             if (it?.buyorsell == "0") {//买
-                                text = quoteDayData?.bid?.toString()
+                                text = NumberUtils.roundNum(NumberUtils.doubleDistortion(quoteDayData?.bid?.toString()),goodsInfoData.decimalplace)
                             } else {//卖
-                                text = quoteDayData?.bid?.toString()
+                                text = NumberUtils.roundNum(NumberUtils.doubleDistortion(quoteDayData?.bid?.toString()),goodsInfoData.decimalplace)
                             }
                         }
                         textSizeAuto = 31
@@ -245,8 +244,11 @@ class PositionViewHolder(
                 emptyView()
 
                 textView {
+
                     data.bindOptional(context){
-                        text = "卖出"
+                        if (it?.enableqty.isNullOrEmpty() || it?.enableqty == "0"){
+                            visibility = View.GONE
+                        }
                     }
                     onThrottleFirstClick {
                         EventBus.getDefault().post(
@@ -262,6 +264,7 @@ class PositionViewHolder(
                     gravity = Gravity.CENTER
                     textColorInt = R.color.rma_item_click_color
                     textSizeAuto = 26
+                    text = "卖出"
                 }.lparams(autoSize(120), autoSize(48)) {
                     marginEnd = autoSize(24)
                 }
@@ -281,6 +284,11 @@ class PositionViewHolder(
                 }
 
                 textView {
+                    data.bindOptional(context){
+                        if (it?.enableqty.isNullOrEmpty() || it?.enableqty == "0"){
+                            visibility = View.GONE
+                        }
+                    }
                     onThrottleFirstClick {
                         val intent = Intent()
                         intent.putExtra("data", data.value)

+ 14 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/eventbus/EventConstent.kt

@@ -17,4 +17,18 @@ object EventConstent {
      */
     const val OPTIONAL_GOODS_CHANGE = "optional_goods_change"
 
+    /**
+     * 资金变化通知
+     */
+    const val FID_MoneyChangedNtf = "FID_MoneyChangedNtf"
+
+    /**
+     * 委托单成交通知
+     */
+    const val FID_OrderDealedNtf = "FID_OrderDealedNtf"
+
+    /**
+     * 头寸变化通知
+     */
+    const val FID_PosChangedNtf = "FID_PosChangedNtf"
 }

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

@@ -9,12 +9,12 @@
     app:isShowMinute="true"
     app:isShowSecond="true"
     app:isShowMillisecond="false"
-    app:timeTextColor="#FF2F2C"
+    app:timeTextColor="#ffffff"
     app:timeBgColor="#333333"
     app:timeTextSize="16sp"
     app:isTimeTextBold="true"
     app:suffixGravity="bottom"
-    app:suffixTextColor="#FF2F2C"
+    app:suffixTextColor="#ffffff"
     app:suffixTextSize="6sp"
     app:suffixDay="天"
     app:suffixHour=":"