Bläddra i källkod

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

Liu.bolan 4 år sedan
förälder
incheckning
dca726eaf9
50 ändrade filer med 882 tillägg och 399 borttagningar
  1. 2 0
      RMA/app/src/main/AndroidManifest.xml
  2. 14 7
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt
  3. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/adapter/AccountAdapter.kt
  4. 10 10
      RMA/app/src/main/java/cn/muchinfo/rma/business/commodity/adapter/CommodityAdapter.kt
  5. 4 4
      RMA/app/src/main/java/cn/muchinfo/rma/business/contract/adapter/ContractAdapter.kt
  6. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/business/customer/adapter/CustomerAdapter.kt
  7. 66 4
      RMA/app/src/main/java/cn/muchinfo/rma/business/future/FutureManager.kt
  8. 4 4
      RMA/app/src/main/java/cn/muchinfo/rma/business/hedge/adapter/HedgeAdapter.kt
  9. 31 1
      RMA/app/src/main/java/cn/muchinfo/rma/global/BaseGlobalData.java
  10. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/global/ErrorMessageUtils.kt
  11. 0 113
      RMA/app/src/main/java/cn/muchinfo/rma/global/GlobalDataCollection.java
  12. 144 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/GlobalDataCollection.kt
  13. 3 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/dao/GoodsInfoDao.java
  14. 16 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/GoodsInfoAndQuotes.kt
  15. 130 0
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/QuoteDayData.kt
  16. 4 41
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/LoginQueryData.kt
  17. 9 44
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/loginQeruy/ExternalExchanges.kt
  18. 13 1
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/loginQeruy/SystemParams.kt
  19. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/global/utils/SelectIUtils.kt
  20. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/netManage/utils/MyOkHttpUtils.kt
  21. 5 5
      RMA/app/src/main/java/cn/muchinfo/rma/view/MainViewModel.kt
  22. 7 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/MyApplication.kt
  23. 3 5
      RMA/app/src/main/java/cn/muchinfo/rma/view/autoWidget/dialog/Dialog.kt
  24. 5 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/app/Constant.kt
  25. 8 8
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/exposure/ExposureViewModel.kt
  26. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/BaseFutureModel.kt
  27. 35 23
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/FutureMarket.kt
  28. 112 29
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketBaseModel.kt
  29. 60 16
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketFragment.kt
  30. 79 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/trade/GoodsTradeActivity.kt
  31. 12 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/trade/GoodsTradeViewModel.kt
  32. 7 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/HomeFragment.kt
  33. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/HomeViewModel.kt
  34. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/business/BusinessManagementViewModel.kt
  35. 18 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/AddHedgeGoodsActivity.kt
  36. 7 7
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/commodity/CommodityInformationViewModel.kt
  37. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/AddContractActivity.kt
  38. 4 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/contract/ContractViewModel.kt
  39. 3 3
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/AddCustomerDataActivity.kt
  40. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/customerdata/CustomerDataViewModel.kt
  41. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/financial/FinancialViewModel.kt
  42. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/AddHedgePlanActivity.kt
  43. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/hedge/HedgePlanViewModel.kt
  44. 9 9
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/ReportQueryViewModel.kt
  45. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/tradingquery/TradingQueryActivity.kt
  46. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/tradingquery/TradingQueryViewModel.kt
  47. 17 16
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/login/LoginActivity.kt
  48. 5 5
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/procurement/ProcurementViewModel.kt
  49. 1 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/sale/SaleViewModel.kt
  50. 5 0
      RMA/app/src/main/res/drawable/rma_white.xml

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

@@ -164,6 +164,8 @@
         <activity android:name=".view.base.home.commodity.SpotVarietiesDetailsActivity"/>
 
         <activity android:name=".view.base.home.commodity.HedgeSpeciesDetailsActivity"/>
+
+        <activity android:name=".view.base.future.trade.GoodsTradeActivity"/>
     </application>
 
 </manifest>

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

@@ -130,11 +130,11 @@ class AccountManager {
         val tradeSocketManager = app.tradeSocketManager.guard { return }
 
         // 记录服务端时间差值,由于服务端在登录后回传的系统时间已经加了时区,所以我们在转成Date对象之前要先把它减去8小时
-        GlobalDataCollection.getInstance().timeStamp =
+        GlobalDataCollection.instance?.timeStamp =
             Date(loginRsp.systemTime - 60 * 60 * 8).time - Date().time
 
         // 记录相关登录信息
-        GlobalDataCollection.getInstance().loginRsp = loginRsp
+        GlobalDataCollection.instance?.loginRsp = loginRsp
 
         // 成功后通知网络开始发送心跳
         tradeSocketManager.startBeatTime()
@@ -158,8 +158,8 @@ class AccountManager {
         }
 
         // 获取LoginID和Token
-        val loginRsp = GlobalDataCollection.getInstance().loginRsp
-        val reqPacket = AccountAdapter.buildTokenCheckReqPacket(loginRsp.loginID, loginRsp.token)
+        val loginRsp = GlobalDataCollection.instance?.loginRsp
+        val reqPacket = AccountAdapter.buildTokenCheckReqPacket(loginRsp?.loginID ?: 0, loginRsp?.token ?: "")
         // 发送请求
         tradeSocketManager.send(
             reqPacket,
@@ -236,11 +236,12 @@ class AccountManager {
      */
     fun loginQuery(callBack: (isCompleted: Boolean, err: Error?) -> Unit) {
 
-        var loginInfo: SystemMI1.LoginRsp = GlobalDataCollection.getInstance().loginRsp
+        var loginInfo: SystemMI1.LoginRsp = GlobalDataCollection.instance?.loginRsp!!
         val params = mutableMapOf<String, String>()
         params["loginID"] = loginInfo.loginID.toString()
         MyOkHttpUtils().queryGetForUrl(
-            URL = SPUtils.getInstance().getString(Constant.goCommonSearchUrl) + ServiceFunApi.LOGIN_QUERY,
+            URL = SPUtils.getInstance()
+                .getString(Constant.goCommonSearchUrl) + ServiceFunApi.LOGIN_QUERY,
             params = params,
             callback = object : ResponseCallback<BaseResult<LoginQueryData>>() {
                 override fun onError(call: Call?, e: Exception?, id: Int) {
@@ -248,7 +249,13 @@ class AccountManager {
                 }
 
                 override fun onResponse(response: BaseResult<LoginQueryData>?, id: Int) {
-                    GlobalDataCollection.getInstance().loginQueryData = response?.data
+                    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)
                 }
             }

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

@@ -76,10 +76,10 @@ class AccountAdapter {
             val builder = SystemMI1.TokenCheckReq.newBuilder()
             builder.loginID = loginID
             builder.token = token
-            builder.systemTime = Date().time + GlobalDataCollection.getInstance().timeStamp
+            builder.systemTime = Date().time + GlobalDataCollection.instance?.timeStamp!!
 
-            val loginRsp = GlobalDataCollection.getInstance().loginRsp
-            builder.setHeader(MessageHeadModel.getHead(funCode, loginRsp.userID, 0, 0, 0))
+            val loginRsp = GlobalDataCollection.instance?.loginRsp
+            builder.setHeader(MessageHeadModel.getHead(funCode, loginRsp?.userID ?: 0, 0, 0, 0))
             val arrayOutputStream = ByteArrayOutputStream();
             builder.build().writeTo(arrayOutputStream)
 

+ 10 - 10
RMA/app/src/main/java/cn/muchinfo/rma/business/commodity/adapter/CommodityAdapter.kt

@@ -45,13 +45,13 @@ object CommodityAdapter {
         builder.wrstandardid = wrstandardid
         builder.type = type
         builder.unitid = unitid
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
         // FIXME: - 250000000005
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.DeliveryGoodsApplyReq,
                 loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )
@@ -105,13 +105,13 @@ object CommodityAdapter {
         val builder = ManageServiceMI2.DeliveryGoodsCancelReq.newBuilder()
         builder.wrstandardid = wrstandardid
         builder.isvalid = isvalid
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
         // FIXME: - 250000000005
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.DeliveryGoodsCancelReq,
                 loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )
@@ -216,13 +216,13 @@ object CommodityAdapter {
         }
         builder.remark = remark
 
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
         // FIXME: - 250000000005
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.ErmsMiddelGoodsReq,
                 loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )
@@ -317,13 +317,13 @@ object CommodityAdapter {
             builder.goodsgroupid = goodsgroupid
         }
         builder.remark = remark
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
         // FIXME: - 250000000005
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.ErmsMiddelGoodsEditReq,
                 loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )
@@ -369,13 +369,13 @@ object CommodityAdapter {
         builder.middlegoodsid = middlegoodsid
         builder.isvalid = isvalid
         builder.modifierid = modifierid
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
         // FIXME: - 250000000005
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.ErmsMiddelGoodsStopReq,
                 loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )

+ 4 - 4
RMA/app/src/main/java/cn/muchinfo/rma/business/contract/adapter/ContractAdapter.kt

@@ -121,13 +121,13 @@ object ContractAdapter {
 
         }
 
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
         // FIXME: - 250000000005
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.SpotContractOperateReq,
                 loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )
@@ -185,12 +185,12 @@ object ContractAdapter {
         operateApplyID: Long = 0
     ): Packet50 {
         val builder = ErmcpMI1.ContractOperateApplyReq.newBuilder()
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp!!
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.ContractOperateApplyReq,
                 loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/business/customer/adapter/CustomerAdapter.kt

@@ -36,13 +36,13 @@ object CustomerAdapter {
             builder.remark = remark
         }
 
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp
         // FIXME: - 250000000005
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.UserInfoCheckMangeReq,
-                loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                loginInfo?.userID ?: 0,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )

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

@@ -1,5 +1,9 @@
 package cn.muchinfo.rma.business.future
 
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.GoodsInfoAndQuotes
+import cn.muchinfo.rma.global.data.MiddleGoodsDetail
+import cn.muchinfo.rma.global.data.QuoteDayData
 import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
 import cn.muchinfo.rma.global.database.AppDatabase
 import cn.muchinfo.rma.global.database.UserDatabase
@@ -25,25 +29,83 @@ class FutureManager {
         // 查询最大goodsId
         var goodsId = "0"
         var params = mutableMapOf<String, String>()
-        params["lastID"] = goodsId
+        if (SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME).isNotEmpty()){
+            goodsId = SPUtils.getInstance().getString(Constant.GOODS_UPDATE_TIME)
+        }
+//        params["lastUpdateTime"] = goodsId
         // 对接接口
         MyOkHttpUtils().query(
             URL = SPUtils.getInstance()
                 .getString(Constant.goCommonSearchUrl) + ServiceFunApi.GET_ER_MCP_GOODS,
             params = params,
             type = "1",
-            callback = object : ResponseCallback<BaseResult<Array<GoodsInfo>>>() {
-                override fun onResponse(response: BaseResult<Array<GoodsInfo>>?, id: Int) {
+            callback = object : ResponseCallback<BaseResult<List<GoodsInfo>>>() {
+                override fun onResponse(response: BaseResult<List<GoodsInfo>>?, id: Int) {
                     // 存储直接入库,需要的时候,再查询,检查方法的运行时间,10ms可以接受
-//                    Builder.getDatabase<AppDatabase>().goodsInfoDao.insertAll(response?.data)
+                    Builder.getDatabase<AppDatabase>().goodsInfoDao.insertAll(response?.data)
+                    putGoodsInfoAndQuotesList()
                     callback(true, null)
                 }
 
                 override fun onError(call: Call?, e: Exception?, id: Int) {
                     callback(false, Error(e?.message))
                 }
+            }
+        )
+    }
+
+    /**
+     * 把数据库中的商品信息暂存本地数据中心
+     */
+    private fun putGoodsInfoAndQuotesList(){
+        val goodsInfoList = Builder.getDatabase<AppDatabase>().goodsInfoDao.all
+        val goodsInfoAndQuotesList = GlobalDataCollection.instance?.goodsInfoAndQuotesList
+        goodsInfoList.forEach{
+            goodsInfoAndQuotesList?.add(GoodsInfoAndQuotes(outgoodscode = it.outgoodscode,goodsInfo = it))
+        }
+    }
+
+    /**
+     * 获取商品盘面信息
+     * @param params Map<String, String> goodsCodes 商品代码列表,格式:CU2102,CU2103,AL2107
+     * @param responseBack Function3<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] MiddleGoodsDetail?, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryQuoteDay(
+        params: Map<String, String>,
+        responseBack: (isSuccess: Boolean, respData: List<QuoteDayData>?, error: Error?) -> Unit
+    ){
+        MyOkHttpUtils().query(
+            URL = SPUtils.getInstance().getString(Constant.goCommonSearchUrl) + "/Quote/QueryQuoteDay",
+            params = params,
+            type = "1",
+            callback = object : ResponseCallback<BaseResult<List<QuoteDayData>>>(){
+                override fun onResponse(response: BaseResult<List<QuoteDayData>>?, id: Int) {
+                    insertQuoteInGoodsInfoAndQuotesList(response?.data)
+                    responseBack(true, response?.data, null)
+                }
+
+                override fun onError(call: Call?, e: Exception?, id: Int) {
+                    responseBack(false, null, Error(e?.message))
+                }
 
             }
         )
     }
+
+    /**
+     * 把查询到的盘面信息依据outgoodscode插入暂存的商品盘面信息内
+     * @param quoteList List<QuoteDayData>
+     */
+    private fun insertQuoteInGoodsInfoAndQuotesList(quoteList : List<QuoteDayData>?){
+        val goodsInfoAndQuotesList = GlobalDataCollection.instance?.goodsInfoAndQuotesList
+        quoteList?.forEach {data ->
+            val goodsInfoAndQuotes =  goodsInfoAndQuotesList?.find {
+                data.goodscode == it.outgoodscode
+            }
+            val newInfoAndQuotes = goodsInfoAndQuotes
+            goodsInfoAndQuotesList?.remove(goodsInfoAndQuotes)
+            newInfoAndQuotes?.quoteDayData = data
+            goodsInfoAndQuotesList?.add(newInfoAndQuotes)
+        }
+    }
 }

+ 4 - 4
RMA/app/src/main/java/cn/muchinfo/rma/business/hedge/adapter/HedgeAdapter.kt

@@ -44,13 +44,13 @@ object HedgeAdapter {
             hedgePlanInfoOrBuilder.planTime = hedgePlanData.PlanTime
             hedgePlanInfoOrBuilder.planQty = hedgePlanData.PlanQty
         }
-        val loginInfo = GlobalDataCollection.getInstance().loginRsp
+        val loginInfo = GlobalDataCollection.instance?.loginRsp
         // FIXME: - 250000000005
         builder.setHeader(
             MessageHeadModel.getHead(
                 FunCode.SpotContractOperateReq,
-                loginInfo.userID,
-                GlobalDataCollection.getInstance().accountId,
+                loginInfo?.userID ?: 0,
+                GlobalDataCollection.instance?.accountId ?: 0,
                 0,
                 18
             )
@@ -60,7 +60,7 @@ object HedgeAdapter {
         if (operateType == 1 || operateType == 2){
             builder.info = hedgePlanInfoOrBuilder.build()
         }
-        builder.userID = loginInfo.loginID
+        builder.userID = loginInfo?.loginID ?: 0
         builder.remark = remark
         builder.operateType = operateType
         builder.operateSrc = 2

+ 31 - 1
RMA/app/src/main/java/cn/muchinfo/rma/global/BaseGlobalData.java

@@ -5,8 +5,10 @@ import java.util.Date;
 import java.util.List;
 
 import cn.muchinfo.rma.global.data.AccountData;
+import cn.muchinfo.rma.global.data.GoodsInfoAndQuotes;
 import cn.muchinfo.rma.global.data.UserAccountData;
 import cn.muchinfo.rma.global.data.account.LoginQueryData;
+import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo;
 import cn.muchinfo.rma.global.data.database.EnumDicEntity;
 import cn.muchinfo.rma.global.data.database.ErrorCodeEntity;
 import cn.muchinfo.rma.protobuf.protoclasses.SystemMI1;
@@ -57,6 +59,35 @@ public class BaseGlobalData {
      */
     private LoginQueryData loginQueryData;
 
+    /**
+     * 商品信息
+     * @return
+     */
+    private List<GoodsInfo> goodsInfoList;
+
+    /**
+     * 包含商品信息和goodscode和盘面信息的实体类
+     */
+    private ArrayList<GoodsInfoAndQuotes> goodsInfoAndQuotesList;
+
+    public ArrayList<GoodsInfoAndQuotes> getGoodsInfoAndQuotesList() {
+        if (goodsInfoAndQuotesList == null){
+            goodsInfoAndQuotesList = new ArrayList<>();
+        }
+        return goodsInfoAndQuotesList;
+    }
+
+    public void setGoodsInfoAndQuotesList(ArrayList<GoodsInfoAndQuotes> goodsInfoAndQuotesList) {
+        this.goodsInfoAndQuotesList = goodsInfoAndQuotesList;
+    }
+
+    public List<GoodsInfo> getGoodsInfoList() {
+        return goodsInfoList;
+    }
+
+    public void setGoodsInfoList(List<GoodsInfo> goodsInfoList) {
+        this.goodsInfoList = goodsInfoList;
+    }
 
     public UserAccountData getUserAccountData() {
         return userAccountData;
@@ -113,6 +144,5 @@ public class BaseGlobalData {
 
     public void setLoginQueryData(LoginQueryData loginQueryData) {
         this.loginQueryData = loginQueryData;
-
     }
 }

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

@@ -12,7 +12,7 @@ object ErrorMessageUtils {
      * @return
      */
     fun getErrorString(retCode: Int): String? {
-        val errorCodeString: String = GlobalDataCollection.getInstance().getErrorString(retCode.toString()) ?: ""
+        val errorCodeString: String = GlobalDataCollection.instance?.getErrorString(retCode.toString()) ?: ""
             if ("" == errorCodeString) { // 如果没有,就这么提示
                 return "未知错误$retCode"
             }

+ 0 - 113
RMA/app/src/main/java/cn/muchinfo/rma/global/GlobalDataCollection.java

@@ -1,113 +0,0 @@
-package cn.muchinfo.rma.global;
-
-
-import com.blankj.utilcode.util.SPUtils;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import cn.muchinfo.rma.global.data.AccountData;
-import cn.muchinfo.rma.global.data.database.ErrorCodeEntity;
-import cn.muchinfo.rma.view.base.app.Constant;
-
-public class GlobalDataCollection extends BaseGlobalData {
-
-    private static final Lock _lock = new ReentrantLock();
-
-    private static GlobalDataCollection instance = null;
-
-    public static GlobalDataCollection getInstance() {
-        if (instance == null) {
-            _lock.lock();
-            instance = new GlobalDataCollection();
-            _lock.unlock();
-        }
-        return instance;
-    }
-
-    /**
-     * 获取错误信息
-     * @param errorcode
-     * @return
-     */
-    public String getErrorString(String errorcode){
-        String errorString = "";
-        List<ErrorCodeEntity> dataList = getErrorCodeEntityList();
-        for (int i = 0; i < dataList.size(); i++) {
-            if (errorcode.equals(dataList.get(i).getErrorcode())){
-                errorString = dataList.get(i).getDescription();
-            }
-        }
-        return errorString;
-    }
-
-    /**
-     * 获取外部资金账号
-     */
-    public Long getAccountId(){
-        long accountId;
-        if (GlobalDataCollection.getInstance().getAccountDataList() == null || GlobalDataCollection.getInstance().getAccountDataList().isEmpty()){
-            accountId = 0L;
-        }else {
-            if (SPUtils.getInstance().getLong(Constant.SELECT_ACCOUNT_ID,0) == 0){
-                accountId = GlobalDataCollection.getInstance().getAccountDataList().get(0).getAccountid();
-            }else {
-                accountId = SPUtils.getInstance().getLong(Constant.SELECT_ACCOUNT_ID);
-            }
-        }
-        return accountId;
-    }
-
-    /**
-     * 获取当前选择的资金账户信息
-     * @return
-     */
-    public AccountData getAccountData(){
-        AccountData accountData = null;
-        if (GlobalDataCollection.getInstance().getAccountDataList() == null || GlobalDataCollection.getInstance().getAccountDataList().isEmpty()){
-            accountData = new AccountData();
-        }else {
-            if (SPUtils.getInstance().getLong(Constant.SELECT_ACCOUNT_ID,0) == 0){
-                accountData = GlobalDataCollection.getInstance().getAccountDataList().get(0);
-            }else {
-                for (int i = 0; i < GlobalDataCollection.getInstance().getAccountDataList().size(); i++){
-                    if (GlobalDataCollection.getInstance().getAccountDataList().get(i).getAccountid() == Long.parseLong(SPUtils.getInstance().getString(Constant.SELECT_ACCOUNT_ID))){
-                        accountData = GlobalDataCollection.getInstance().getAccountDataList().get(i);
-                    }
-                }
-            }
-        }
-        return accountData;
-    }
-
-    /**
-     * 一个月时间差
-     *
-     * @return
-     */
-    public String oneMonth() {
-        Calendar calendar = Calendar.getInstance();
-        calendar.add(Calendar.DAY_OF_MONTH, -7);
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-        return format.format(calendar.getTime());
-    }
-
-    /**
-     * 七天时间差
-     *
-     * @return
-     */
-    public String curWeek() {
-        Calendar calendar = Calendar.getInstance();
-        calendar.add(Calendar.DAY_OF_MONTH, -7);
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-        return format.format(calendar.getTime());
-    }
-
-
-
-}

+ 144 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/GlobalDataCollection.kt

@@ -0,0 +1,144 @@
+package cn.muchinfo.rma.global
+
+import cn.muchinfo.rma.global.data.AccountData
+import cn.muchinfo.rma.global.data.QuoteDayData
+import cn.muchinfo.rma.view.base.app.Constant
+import com.blankj.utilcode.util.SPUtils
+import java.text.SimpleDateFormat
+import java.util.*
+import java.util.concurrent.locks.Lock
+import java.util.concurrent.locks.ReentrantLock
+
+class GlobalDataCollection : BaseGlobalData() {
+    // 把行情系统需要的数据  进行整理归类 在这里进行存储 goodsCode
+    private var mGoodsInfoClass: HashMap<String, QuoteDayData>? = null
+
+    fun getmGoodsInfoClass(): HashMap<String, QuoteDayData> {
+        if (mGoodsInfoClass == null) {
+            mGoodsInfoClass = HashMap()
+        }
+        return mGoodsInfoClass!!
+    }
+
+    /**
+     * 获取错误信息
+     * @param errorcode
+     * @return
+     */
+    fun getErrorString(errorcode: String): String {
+        var errorString = ""
+        val dataList = errorCodeEntityList
+        for (i in dataList.indices) {
+            if (errorcode == dataList[i].errorcode) {
+                errorString = dataList[i].description
+            }
+        }
+        return errorString
+    }
+
+    /**
+     * 获取外部资金账号
+     */
+    val accountId: Long
+        get() {
+            val accountId: Long
+            accountId = if (instance
+                    ?.getAccountDataList() == null || instance!!.getAccountDataList().isEmpty()
+            ) {
+                0L
+            } else {
+                if (SPUtils.getInstance()
+                        .getLong(Constant.SELECT_ACCOUNT_ID, 0) == 0L
+                ) {
+                    instance!!.accountDataList[0].accountid
+                } else {
+                    SPUtils.getInstance()
+                        .getLong(Constant.SELECT_ACCOUNT_ID)
+                }
+            }
+            return accountId
+        }
+
+    /**
+     * 获取当前选择的资金账户信息
+     * @return
+     */
+    val accountData: AccountData?
+        get() {
+            var accountData: AccountData? = null
+            if (instance?.getAccountDataList() == null) {
+                accountData = AccountData()
+            } else {
+                if (SPUtils.getInstance().getLong(Constant.SELECT_ACCOUNT_ID, 0) == 0L) {
+                    accountData = instance!!.accountDataList[0]
+                } else {
+                    for (i in instance!!.getAccountDataList().indices) {
+                        if (instance!!.accountDataList[i].accountid == SPUtils.getInstance()
+                                .getString(Constant.SELECT_ACCOUNT_ID)
+                                .toLong()
+                        ) {
+                            accountData = instance!!.accountDataList[i]
+                        }
+                    }
+                }
+            }
+            return accountData
+        }
+
+    /**
+     * 一个月时间差
+     *
+     * @return
+     */
+    fun oneMonth(): String {
+        val calendar = Calendar.getInstance()
+        calendar.add(Calendar.DAY_OF_MONTH, -7)
+        val format = SimpleDateFormat("yyyy-MM-dd")
+        return format.format(calendar.time)
+    }
+
+    /**
+     * 七天时间差
+     *
+     * @return
+     */
+    fun curWeek(): String {
+        val calendar = Calendar.getInstance()
+        calendar.add(Calendar.DAY_OF_MONTH, -7)
+        val format = SimpleDateFormat("yyyy-MM-dd")
+        return format.format(calendar.time)
+    }
+
+    /**
+     * 获取商品信息最后更新时间
+     * @return
+     */
+    val goodsInfoUpdateTime: String
+        get() {
+            val systemParamsArrayList =
+                instance!!.loginQueryData.systemParams
+            var updateTime = ""
+            for (j in systemParamsArrayList!!.indices) {
+                val (_, _, paramcode, _, _, _, _, _, _, _, _, updatetime) = systemParamsArrayList[j]
+                if (paramcode == "023") {
+                    updateTime = updatetime
+                }
+            }
+            return updateTime
+        }
+
+    companion object {
+        private val _lock: Lock =
+            ReentrantLock()
+        var instance: GlobalDataCollection? = null
+            get() {
+                if (field == null) {
+                    _lock.lock()
+                    field = GlobalDataCollection()
+                    _lock.unlock()
+                }
+                return field
+            }
+            private set
+    }
+}

+ 3 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/dao/GoodsInfoDao.java

@@ -21,6 +21,9 @@ public interface GoodsInfoDao {
     @Query("SELECT * FROM goods_infos order by goods_code limit 0, :limit")
     List<GoodsInfo> getLimit(int limit);
 
+    @Query("SELECT * FROM goods_infos WHERE goods_group_id = :groupid")
+    List<GoodsInfo> getGoodsGroups(int groupid);
+
     @Query("SELECT count(*) as count FROM goods_infos")
     Cursor getCount();
 

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

@@ -0,0 +1,16 @@
+package cn.muchinfo.rma.global.data
+
+import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
+
+/**
+ * 包含商品信息和goodscode和盘面信息的实体类
+ * @property goodsInfo GoodsInfo
+ * @property outgoodscode String
+ * @property quoteDayData QuoteDayData
+ * @constructor
+ */
+data class GoodsInfoAndQuotes(
+    var goodsInfo : GoodsInfo = GoodsInfo(),
+    var outgoodscode : String = "",
+    var quoteDayData: QuoteDayData = QuoteDayData()
+)

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

@@ -0,0 +1,130 @@
+package cn.muchinfo.rma.global.data
+
+/**
+ * 盘面信息
+ */
+data class QuoteDayData(
+    val ask : Double = 0.0,//卖1
+    val ask10 : Double = 0.0,//卖10
+    val ask2 : Double = 0.0,//卖2
+    val ask3 : Double = 0.0,//卖3
+    val ask4 : Double = 0.0,//卖4
+    val ask5 : Double = 0.0,//卖5
+    val ask6 : Double = 0.0,//卖6
+    val ask7 : Double = 0.0,//卖7
+    val ask8 : Double = 0.0,//卖8
+    val ask9 : Double = 0.0,//卖9
+    val askorderid : Int = 0,//卖单号1
+    val askorderid2 : Int = 0,//卖单号2
+    val askorderid3 : Int = 0,//卖单号3
+    val askorderid4 : Int = 0,//卖单号4
+    val askorderid5 : Int = 0,//卖单号5
+    val askordervolume : Int = 0,//卖单量1
+    val askordervolume10 : Int = 0,//卖单量10
+    val askordervolume2 : Int = 0,//卖单量2
+    val askordervolume3 : Int = 0,//卖单量3
+    val askordervolume4 : Int = 0,//卖单量4
+    val askordervolume5 : Int = 0,//卖单量5
+    val askordervolume6 : Int = 0,//卖单量6
+    val askordervolume7 : Int = 0,//卖单量7
+    val askordervolume8 : Int = 0,//卖单量8
+    val askordervolume9 : Int = 0,//卖单量9
+    val askqueueinfo : String = "",//大利市卖港股用
+    val askvolume : Int = 0,//卖量1
+    val askvolume10 : Int = 0,//卖量10
+    val askvolume2 : Int = 0,//卖量2
+    val askvolume3 : Int = 0,//卖量3
+    val askvolume4 : Int = 0,//卖量4
+    val askvolume5 : Int = 0,//卖量5
+    val askvolume6 : Int = 0,//卖量6
+    val askvolume7 : Int = 0,//卖量7
+    val askvolume8 : Int = 0,//卖量8
+    val askvolume9 : Int = 0,//卖量9
+    val averageprice : Double = 0.0,//均价
+    val bid : Double = 0.0,//买1
+    val bid10 : Double = 0.0,//买10
+    val bid2 : Double = 0.0,//买2
+    val bid3 : Double = 0.0,//买3
+    val bid4 : Double = 0.0,//买4
+    val bid5 : Double = 0.0,//买5
+    val bid6 : Double = 0.0,//买6
+    val bid7 : Double = 0.0,//买7
+    val bid8 : Double = 0.0,//买8
+    val bid9 : Double = 0.0,//买9
+    val bidorderid : Int = 0,//买单号1
+    val bidorderid2 : Int = 0,//买单号2
+    val bidorderid3 : Int = 0,//买单号3
+    val bidorderid4 : Int = 0,//买单号4
+    val bidorderid5 : Int = 0,//买单号5
+    val bidordervolume : Int = 0,//买单量1
+    val bidordervolume10 : Int = 0,//买单量10
+    val bidordervolume2 : Int = 0,//买单量2
+    val bidordervolume3 : Int = 0,//买单量3
+    val bidordervolume4 : Int = 0,//买单量4
+    val bidordervolume5 : Int = 0,//买单量5
+    val bidordervolume6 : Int = 0,//买单量6
+    val bidordervolume7 : Int = 0,//买单量7
+    val bidordervolume8 : Int = 0,//买单量8
+    val bidordervolume9 : Int = 0,//买单量9
+    val bidqueueinfo : String = "",//大利市买港股用
+    val bidvolume : Int = 0,//买量1
+    val bidvolume10 : Int = 0,//买量10
+    val bidvolume2 : Int = 0,//买量2
+    val bidvolume3 : Int = 0,//买量3
+    val bidvolume4 : Int = 0,//买量4
+    val bidvolume5 : Int = 0,//买量5
+    val bidvolume6 : Int = 0,//买量6
+    val bidvolume7 : Int = 0,//买量7
+    val bidvolume8 : Int = 0,//买量8
+    val bidvolume9 : Int = 0,//买量9
+    val calloptionpremiums : Int = 0,//认购期权1
+    val calloptionpremiums2 : Int = 0,//认购期权2
+    val calloptionpremiums3 : Int = 0,//认购期权3
+    val calloptionpremiums4 : Int = 0,//认购期权4
+    val calloptionpremiums5 : Int = 0,//认购期权5
+    val cleartime : String = "",//清盘时间
+    val exchangecode : Int = 0,//交易所代码
+    val exchangedate : String = "",//交易日
+    val goodscode : String = "",//商品代码
+    val grepmarketprice : Double = 0.0,//暗盘价 港股专用
+    val highest : Double = 0.0,//最高价
+    val holdincrement : Int = 0,//单笔持仓
+    val holdvolume : Int = 0,//持仓
+    val iep : Double = 0.0,//平衡价 港股专用
+    val iev : Double = 0.0,//平衡量 港股专用
+    val inventory : Int = 0,//库存
+    val iscleared : Int = 0,//是否清盘标志
+    val issettled : Int = 0,//是否结算标志
+    val last : Double = 0.0,//最新价
+    val lastlot : Int = 0,//最新成交手数
+    val lasttime : String = "",//行情时间(只有现价变化行情时间才变化)
+    val lastturnover : Double = 0.0,//最新成交金额
+    val lastvolume : Int = 0,//最新成交量
+    val limitdown : Double = 0.0,//跌停价
+    val limitup : Double = 0.0,//涨停价
+    val lowest : Double = 0.0,//最低价
+    val nontotalholdervolume : Int = 0,//非交易持仓量
+    val nontotallot : Int = 0,//非交易总手数
+    val nontotalturnover : String = "",//非交易总金额
+    val nontotalvolume : String = "",//非交易总量
+    val opened : Double = 0.0,//开盘价
+    val opentime : String = "",//开盘时间
+    val orderid : Int = 0,//序号
+    val preclose : Double = 0.0,//昨收
+    val preholdvolume : Int = 0,//昨持仓
+    val presettle : Double = 0.0,//昨结价
+    val publictradetype : String = "",//公共交易标志类型 港股专用
+    val putoptionpremiums : Int = 0,//认沽期权1
+    val putoptionpremiums2 : Int = 0,//认沽期权2
+    val putoptionpremiums3 : Int = 0,//认沽期权3
+    val putoptionpremiums4 : Int = 0,//认沽期权4
+    val putoptionpremiums5 : Int = 0,//认沽期权5
+    val settle : Double = 0.0,//结算价
+    val strikeprice : Double = 0.0,//发行价
+    val totalaskvolume : Int = 0,//内盘
+    val totalbidvolume : Int = 0,//外盘
+    val totallot : Int = 0,//总手数
+    val totalturnover : Double = 0.0,//总金额
+    val totalvolume : String = "",//总量
+    val utclasttime : String = ""//utc的行情时间
+)

+ 4 - 41
RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/LoginQueryData.kt

@@ -10,9 +10,9 @@ data class LoginQueryData(
     val loginAccount: LoginAccount? = null, // 登录账号
     val userAccount : UserAccount? = null, // 用户账号
     val userInfo: UserInfo? = null, // 用户信息
-    val goodsGroups: Array<GoodsGroups>? = null, // 商品组
-    val externalExchanges: Array<ExternalExchanges>? = null, // 外部交易所
-    val systemParams: Array<SystemParams>? = null // 系统参数
+    val goodsgroups: List<GoodsGroups>? = arrayListOf(), // 商品组
+    val externalExchanges: List<ExternalExchanges>? = arrayListOf(), // 外部交易所
+    val systemParams: List<SystemParams>? = arrayListOf() // 系统参数
 ) {
 
     /**
@@ -20,7 +20,7 @@ data class LoginQueryData(
      */
     fun makeGoods() {
         var map = mutableMapOf<Int, String>() // 外部交易所autoId和商品组中的exExchangeId对应的,这里的map保存autoId,"goodsid,goodsid,goodsid"
-        var list = goodsGroups?.map {
+        var list = goodsgroups?.map {
             if (map.containsKey(it.exexchangeid)) { // 如果有
 
             } else { // 如果没有,直接add
@@ -29,41 +29,4 @@ data class LoginQueryData(
         }
     }
 
-    override fun equals(other: Any?): Boolean {
-        if (this === other) return true
-        if (javaClass != other?.javaClass) return false
-
-        other as LoginQueryData
-
-        if (userName != other.userName) return false
-        if (loginAccount != other.loginAccount) return false
-        if (userAccount != other.userAccount) return false
-        if (userInfo != other.userInfo) return false
-        if (goodsGroups != null) {
-            if (other.goodsGroups == null) return false
-            if (!goodsGroups.contentEquals(other.goodsGroups)) return false
-        } else if (other.goodsGroups != null) return false
-        if (externalExchanges != null) {
-            if (other.externalExchanges == null) return false
-            if (!externalExchanges.contentEquals(other.externalExchanges)) return false
-        } else if (other.externalExchanges != null) return false
-        if (systemParams != null) {
-            if (other.systemParams == null) return false
-            if (!systemParams.contentEquals(other.systemParams)) return false
-        } else if (other.systemParams != null) return false
-
-        return true
-    }
-
-    override fun hashCode(): Int {
-        var result = userName.hashCode()
-        result = 31 * result + (loginAccount?.hashCode() ?: 0)
-        result = 31 * result + (userAccount?.hashCode() ?: 0)
-        result = 31 * result + (userInfo?.hashCode() ?: 0)
-        result = 31 * result + (goodsGroups?.contentHashCode() ?: 0)
-        result = 31 * result + (externalExchanges?.contentHashCode() ?: 0)
-        result = 31 * result + (systemParams?.contentHashCode() ?: 0)
-        return result
-    }
-
 }

+ 9 - 44
RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/loginQeruy/ExternalExchanges.kt

@@ -1,48 +1,13 @@
 package cn.muchinfo.rma.global.data.account.loginQeruy
 
 data class ExternalExchanges(
-    var autoId : Int = 0,
-    var exExchangeCode : String = "", // 外部交易所代码
-    var exExchangeName : String = "", // 外部交易所全称
-    var updateTime : String = "", // 更新时间
-    var quoteGear : Int = 0, // 行情档位(1-10)
-    var showBrokerFlag : Int = 0, // 是否显示买卖经纪盘 - 0:不显示 1:显示
-    var exchangeFullName : String = "", // 外部交易所名称(简称)
-    var isMarketPrice : Int = 0, // 是否支持市价 - 0:不支持 1:支持
+    var autoid : Int = 0,
+    var exexchangecode : String = "", // 外部交易所代码
+    var exexchangename : String = "", // 外部交易所全称
+    var updatetime : String = "", // 更新时间
+    var quotegear : Int = 0, // 行情档位(1-10)
+    var showbrokerflag : Int = 0, // 是否显示买卖经纪盘 - 0:不显示 1:显示
+    var exchangefullname : String = "", // 外部交易所名称(简称)
+    var ismarketprice : Int = 0, // 是否支持市价 - 0:不支持 1:支持
     var goods: Array<Int> = arrayOf()
-) {
-
-    override fun equals(other: Any?): Boolean {
-        if (this === other) return true
-        if (javaClass != other?.javaClass) return false
-
-        other as ExternalExchanges
-
-        if (autoId != other.autoId) return false
-        if (exExchangeCode != other.exExchangeCode) return false
-        if (exExchangeName != other.exExchangeName) return false
-        if (updateTime != other.updateTime) return false
-        if (quoteGear != other.quoteGear) return false
-        if (showBrokerFlag != other.showBrokerFlag) return false
-        if (exchangeFullName != other.exchangeFullName) return false
-        if (isMarketPrice != other.isMarketPrice) return false
-        if (!goods.contentEquals(other.goods)) return false
-
-        return true
-    }
-
-    override fun hashCode(): Int {
-        var result = autoId
-        result = 31 * result + exExchangeCode.hashCode()
-        result = 31 * result + exExchangeName.hashCode()
-        result = 31 * result + updateTime.hashCode()
-        result = 31 * result + quoteGear
-        result = 31 * result + showBrokerFlag
-        result = 31 * result + exchangeFullName.hashCode()
-        result = 31 * result + isMarketPrice
-        result = 31 * result + goods.contentHashCode()
-        return result
-    }
-
-
-}
+)

+ 13 - 1
RMA/app/src/main/java/cn/muchinfo/rma/global/data/account/loginQeruy/SystemParams.kt

@@ -1,5 +1,17 @@
 package cn.muchinfo.rma.global.data.account.loginQeruy
 
 data class SystemParams(
-    val ss: String = ""
+    val loginid : String = "",
+    val modifyflag : String = "",
+    val paramcode : String = "",
+    val paramname : String = "",
+    val paramtype : String = "",
+    val paramvalue : String = "",
+    val paramvalue2 : String = "",
+    val regexpress : String = "",
+    val remark : String = "",
+    val serverip : String = "",
+    val showflag : String = "",
+    val updatetime : String = "",
+    val userid : String = ""
 )

+ 2 - 2
RMA/app/src/main/java/cn/muchinfo/rma/global/utils/SelectIUtils.kt

@@ -12,8 +12,8 @@ object SelectIUtils {
      */
     fun getDocumentType() : List<SelectData>{
         val selectList = arrayListOf<SelectData>()
-        val enumDicEntityList = GlobalDataCollection.getInstance().enumDicEntityList
-        enumDicEntityList.forEach {
+        val enumDicEntityList = GlobalDataCollection.instance?.enumDicEntityList
+        enumDicEntityList?.forEach {
             if (it.enumdiccode == "certificatetype"){
                 selectList.add(SelectData(id = it.enumitemname,value = it.enumdicname))
             }

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/netManage/utils/MyOkHttpUtils.kt

@@ -81,7 +81,7 @@ class MyOkHttpUtils {
         OkHttpUtils.get()
             .url(URL)
             .params(params)
-            .addHeader("Authorization", GlobalDataCollection.getInstance().loginRsp.token)
+            .addHeader("Authorization", GlobalDataCollection.instance?.loginRsp?.token)
             .build()
             .execute(callback)
     }
@@ -118,7 +118,7 @@ class MyOkHttpUtils {
         OkHttpUtils.post()
             .url(URL)
             .params(params)
-            .addHeader("Authorization", GlobalDataCollection.getInstance().loginRsp.token)
+            .addHeader("Authorization", GlobalDataCollection.instance?.loginRsp?.token)
             .build()
             .execute(callback)
     }
@@ -147,7 +147,7 @@ class MyOkHttpUtils {
             .url(URL)
             .content(json.toString())
             .mediaType(MediaType.parse("application/json; charset=utf-8"))
-            .addHeader("Authorization", GlobalDataCollection.getInstance().loginRsp.token)
+            .addHeader("Authorization", GlobalDataCollection.instance?.loginRsp?.token)
             .build()
             .execute(callback)
     }

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

@@ -27,20 +27,20 @@ class MainViewModel : BaseViewModel() {
         // 获取资金账户
         runBlocking {
             val params = mutableMapOf<String, String>().apply {
-                put("loginID", GlobalDataCollection.getInstance().loginRsp.loginID.toString())
+                put("loginID", GlobalDataCollection.instance?.loginRsp?.loginID.toString())
             }
             MyApplication.getInstance()?.initializeManager?.getTaAccounts(params = params) { isSuccess, respData, error ->
                 isInitiaDataSuccess.postValue(isSuccess)
                 if (isSuccess) {
                     getUserAccount()
-                    GlobalDataCollection.getInstance().accountDataList = respData
+                    GlobalDataCollection.instance?.accountDataList = respData
                 } else {
                     loadingDialogStatus.postValue(TaskUiModel.idel())
                 }
             }
         }
         try {
-            GlobalDataCollection.getInstance().errorCodeEntityList = DataBase.getInstance().errorCodeDao().getList()
+            GlobalDataCollection.instance?.errorCodeEntityList = DataBase.getInstance().errorCodeDao().getList()
         }catch (e : Exception){
             e.printStackTrace()
         }
@@ -89,14 +89,14 @@ class MainViewModel : BaseViewModel() {
      */
     fun getUserAccount(){
         val params = mutableMapOf<String, String>().apply {
-            put("userID", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userID", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
 
         MyApplication.getInstance()?.initializeManager?.getUserAccount(params = params){isSuccess, respData, error ->
             isInitiaDataSuccess.postValue(isSuccess)
             if (isSuccess) {
                 loadingDialogStatus.postValue(TaskUiModel.success(msg = "数据初始化成功"))
-                GlobalDataCollection.getInstance().userAccountData = respData
+                GlobalDataCollection.instance?.userAccountData = respData
             } else {
                 loadingDialogStatus.postValue(TaskUiModel.idel())
             }

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

@@ -13,6 +13,7 @@ import cn.muchinfo.rma.business.contract.ContractManager
 import cn.muchinfo.rma.business.customer.CustomerManage
 import cn.muchinfo.rma.business.exposure.ExposureManager
 import cn.muchinfo.rma.business.financial.FinancialManager
+import cn.muchinfo.rma.business.future.FutureManager
 import cn.muchinfo.rma.business.hedge.HedgeManager
 import cn.muchinfo.rma.business.initialize.InitializeManager
 import cn.muchinfo.rma.business.management.BusinessManager
@@ -96,6 +97,9 @@ class MyApplication : BaseApplication() {
     /** 报表查询相关管理类 **/
     var reportManager : ReportManager? = null
 
+    /** 期货相关管理类 **/
+    var futureManager : FutureManager? = null
+
     companion object {
         private var instance: MyApplication? = null
 
@@ -165,8 +169,8 @@ class MyApplication : BaseApplication() {
             enumDao.insert(enumTabDatas)
             SPUtils.getInstance().put(Constant.FISTOPENAPP,false)
         }
-        GlobalDataCollection.getInstance().errorCodeEntityList = DataBase.getInstance().errorCodeDao().getList()
-        GlobalDataCollection.getInstance().enumDicEntityList = DataBase.getInstance().enumsDicDao().getList()
+        GlobalDataCollection.instance?.errorCodeEntityList = DataBase.getInstance().errorCodeDao().getList()
+        GlobalDataCollection.instance?.enumDicEntityList = DataBase.getInstance().enumsDicDao().getList()
     }
 
     private fun initManager() {
@@ -185,6 +189,7 @@ class MyApplication : BaseApplication() {
         exposureManager = ExposureManager()
         tradingQueryManager = TradingQueryManager()
         reportManager = ReportManager()
+        futureManager = FutureManager()
     }
 
     /**

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

@@ -296,16 +296,14 @@ fun AppCompatActivity.creatSelectAccountDialog(
                 }.lparams(matchParent, matchParent)
             }.lparams(matchParent, wrapContent)
 
-            accountAdapter.setNewData(GlobalDataCollection.getInstance().accountDataList)
+            accountAdapter.setNewData(GlobalDataCollection.instance?.accountDataList)
             accountAdapter.setOnItemClickListener { adapter, view, position ->
                 selectAccount?.invoke(
-                    GlobalDataCollection.getInstance().accountDataList.get(
-                        position
-                    )
+                    GlobalDataCollection.instance?.accountDataList?.get(position) ?: AccountData()
                 )
                 SPUtils.getInstance().put(
                     Constant.SELECT_ACCOUNT_ID,
-                    GlobalDataCollection.getInstance().accountDataList.get(position).accountid
+                    GlobalDataCollection.instance?.accountDataList?.get(position)?.accountid ?: 0
                 )
                 dialog.dismiss()
             }

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

@@ -9,9 +9,9 @@ object Constant {
     /**
      * 获取基础url的接口
      */
-    const val baseurl = "http://103.40.249.127:28280/cfg?key=mtp_20"
+//    const val baseurl = "http://103.40.249.127:28280/cfg?key=mtp_20"
 //    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"
+    const val baseurl = "http://192.168.31.114:8080/cfg?key=test_114"
 //    const val baseurl = "http://192.168.31.220:8080/cfg?key=test_220"//李倩
 
     /**
@@ -77,4 +77,7 @@ object Constant {
 
     /** 当前选择的资金账号id **/
     const val SELECT_ACCOUNT_ID = "SELECT_ACCOUNT_ID"
+
+    /**  商品最后更新时间  **/
+    const val GOODS_UPDATE_TIME = "GOODS_UPDATE_TIME"
 }

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

@@ -82,7 +82,7 @@ class ExposureViewModel : BaseViewModel(){
      */
     fun queryExposureDetail(middleGoodsId : String){
         val params = mutableMapOf<String, String>().apply {
-            put("areaUserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("areaUserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("middleGoodsId", middleGoodsId)
         }
 
@@ -98,7 +98,7 @@ class ExposureViewModel : BaseViewModel(){
      */
     fun queryRealtimeExposurePosition(middleGoodsId : String){
         val params = mutableMapOf<String, String>().apply {
-            put("areaUserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("areaUserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("middleGoodsId", middleGoodsId)
         }
 
@@ -175,7 +175,7 @@ class ExposureViewModel : BaseViewModel(){
      */
     fun queryRealtimeExposure(){
         val params = mutableMapOf<String, String>().apply {
-            put("AreaUserID", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("AreaUserID", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
 
         MyApplication.getInstance()?.exposureManager?.queryRealtimeExposure(params = params){isSuccess, respData, error ->
@@ -211,7 +211,7 @@ class ExposureViewModel : BaseViewModel(){
      */
     fun queryExposureSpot(){
         val params = mutableMapOf<String, String>().apply {
-            put("areaUserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("areaUserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
 
         MyApplication.getInstance()?.exposureManager?.queryExposureSpot(params = params){isSuccess, respData, error ->
@@ -226,7 +226,7 @@ class ExposureViewModel : BaseViewModel(){
      */
     fun queryExposureHedgePosition(){
         val params = mutableMapOf<String, String>().apply {
-            put("areaUserID", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("areaUserID", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
 
         MyApplication.getInstance()?.exposureManager?.queryExposureHedgePosition(params = params){isSuccess, respData, error ->
@@ -241,7 +241,7 @@ class ExposureViewModel : BaseViewModel(){
      */
     fun queryHisExposure(){
         val params = mutableMapOf<String, String>().apply {
-            put("areaUserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("areaUserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("lastNum", "30")
         }
         MyApplication.getInstance()?.exposureManager?.queryHisExposure(params = params){isSuccess, respData, error ->
@@ -257,7 +257,7 @@ class ExposureViewModel : BaseViewModel(){
      */
     fun queryExposureSpotDetail(wrstandardId : String){
         val params = mutableMapOf<String, String>().apply {
-            put("areaUserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("areaUserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("wrstandardId", wrstandardId)
         }
         MyApplication.getInstance()?.exposureManager?.queryExposureSpotDetail(params = params){isSuccess, respData, error ->
@@ -273,7 +273,7 @@ class ExposureViewModel : BaseViewModel(){
      */
     fun queryExposureHedgePositionDetail(goodsId : String){
         val params = mutableMapOf<String, String>().apply {
-            put("areaUserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("areaUserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("goodsId", goodsId)
         }
         MyApplication.getInstance()?.exposureManager?.queryExposureHedgePositionDetail(params = params){isSuccess, respData, error ->

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

@@ -33,7 +33,7 @@ class BaseFutureModel: BaseViewModel() {
 
         idTab?.setItemSpaceInScrollMode(space)
         idTab?.setPadding(space, 0, space, 0)
-        idTab?.mode = QMUITabSegment.MODE_SCROLLABLE
+        idTab?.mode = QMUITabSegment.MODE_FIXED//这里可以根据tab的数量设置不同的mode
         idTab?.right = space
 
         val size: Int = QMUIDisplayHelper.sp2px(context, textSize)

+ 35 - 23
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/FutureMarket.kt

@@ -10,6 +10,9 @@ import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentPagerAdapter
 import androidx.viewpager.widget.ViewPager
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.database.AppDatabase
+import cn.muchinfo.rma.global.room.Builder
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseFragment
 import cn.muchinfo.rma.view.base.future.BaseFutureModel
@@ -31,26 +34,12 @@ class FutureMarket : BaseFragment<FutureMarketModel>() {
 //endregion
 
     //region 数据
-    // tab 值
-    private val tabs = arrayOf(
-        MyApplication.getInstance()?.resources?.getString(R.string.str_choose),
-        "主力",
-        "上期所",
-        "大商所",
-        "郑商所",
-        "上期能源",
-        "下期再见"
-    )
+
+    private val tabsData by lazy {
+        GlobalDataCollection.instance?.loginQueryData?.externalExchanges
+    }
     // 页面,和对应的tab对应
-    private val tabFragments: Array<Fragment> = arrayOf(
-        MarketFragment.getInstance(MyApplication.getInstance()?.resources?.getString(R.string.str_choose)!!),
-        MarketFragment.getInstance("主力"),
-        MarketFragment.getInstance("上期所"),
-        MarketFragment.getInstance("大商所"),
-        MarketFragment.getInstance("郑商所"),
-        MarketFragment.getInstance("上期能源"),
-        MarketFragment.getInstance("下期再见")
-    )
+    private val tabFragments : ArrayList<Fragment> = arrayListOf()
 //endregion
 
     override fun onCreateView(
@@ -63,6 +52,10 @@ class FutureMarket : BaseFragment<FutureMarketModel>() {
         return _view
     }
 
+    private fun initData(){
+
+    }
+
     private fun initViews() {
         idFutureTab = _view?.findViewById(R.id.id_future_tab)
         idMarketPager = _view?.findViewById(R.id.id_market_pager)
@@ -70,9 +63,28 @@ class FutureMarket : BaseFragment<FutureMarketModel>() {
         val builder = BaseFutureModel().qmuiTabSegmentConfig(idFutureTab, 14, context!!)
 
         // 加载数据
-        for (cat in tabs) {
-            val item = builder?.setText(cat)?.build(context)
-            idFutureTab?.addTab(item)
+//        for (cat in tabs) {
+//            val item = builder?.setText(cat)?.build(context)
+//            idFutureTab?.addTab(item)
+//        }
+        tabsData?.forEach {data ->
+            val goodsgroupid = GlobalDataCollection.instance?.loginQueryData?.goodsgroups?.find {
+                it.goodsgroupid == data.autoid
+            }?.goodsgroupid
+            if (Builder.getDatabase<AppDatabase>().goodsInfoDao.getGoodsGroups(
+                    goodsgroupid ?: 0
+                ).isNotEmpty()){
+                val item = builder?.setText(data.exexchangename)?.build(context)
+                idFutureTab?.addTab(item)
+                tabFragments.add(MarketFragment.getInstance(data))
+            }
+        }
+
+
+        if (tabsData?.size ?: 0 > 5){
+            idFutureTab?.mode = QMUITabSegment.MODE_SCROLLABLE
+        }else{
+            idFutureTab?.mode = QMUITabSegment.MODE_FIXED
         }
 
         idMarketPager?.adapter = object : FragmentPagerAdapter(
@@ -90,7 +102,7 @@ class FutureMarket : BaseFragment<FutureMarketModel>() {
 
             @Nullable
             override fun getPageTitle(position: Int): CharSequence? {
-                return tabs[position]
+                return tabsData?.get(position)?.exexchangename
             }
         }
         idFutureTab?.setupWithViewPager(idMarketPager, false)

+ 112 - 29
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketBaseModel.kt

@@ -10,11 +10,15 @@ import android.widget.RelativeLayout
 import android.widget.TextView
 import androidx.recyclerview.widget.RecyclerView
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.AvaildGoodsGroupData
+import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
+import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
 import com.blankj.utilcode.util.ToastUtils
 
 class MarketBaseModel : BaseViewModel() {
-    var list: ArrayList<MarketData>? = null
+    var list: List<GoodsInfo>? = null
     var type: String? = null
 
     /**
@@ -24,30 +28,73 @@ class MarketBaseModel : BaseViewModel() {
         return MyAdapter(context, list)
     }
 
+    fun getgoodsCodes(first: Int, last: Int): String {
+        var goodsCodes = ""
+        val newList = list?.subList(first, last)
+        newList?.forEach {
+            goodsCodes = goodsCodes + it.outgoodscode + ","
+        }
+        return goodsCodes
+    }
+
+    /**
+     * 请求盘面信息
+     * @param first Int
+     * @param last Int
+     * @param callback Function2<[@kotlin.ParameterName] Boolean, [@kotlin.ParameterName] Error?, Unit>
+     */
+    fun queryQuoteDay(
+        first: Int,
+        last: Int,
+        callback: (isCompleted: Boolean, err: Error?) -> Unit
+    ) {
+        val goodsCodes = getgoodsCodes(first, last)
+        val params = mutableMapOf<String, String>().apply {
+            put("goodsCodes", goodsCodes)
+        }
+        MyApplication.getInstance()?.futureManager?.queryQuoteDay(params = params) { isSuccess, respData, error ->
+            if (isSuccess) {
+                val map = GlobalDataCollection.instance?.getmGoodsInfoClass()
+                respData?.forEach {
+                    map?.put(it.goodscode, it)
+                }
+                callback(true, null)
+            } else {
+                callback(false, error)
+            }
+        }
+    }
+
     /**
      * 通用的适配器。
      */
-    class MyAdapter(context: Context?, list: ArrayList<MarketData>?) : RecyclerView.Adapter<MyAdapter.MarketHolder>() {
-        private var list: ArrayList<MarketData>? = null
+    class MyAdapter(context: Context?, list: List<GoodsInfo>?) :
+        RecyclerView.Adapter<MyAdapter.MarketHolder>() {
+        private var list: List<GoodsInfo>? = null
         private var inflater: LayoutInflater? = null
         private var context: Context? = null
         private var choose: Drawable? = null
         private var unChoose: Drawable? = null
+        private var noChange : Drawable? = null
         private var pink: Drawable? = null
         private var green: Drawable? = null
         private var priceRed: Int = 0
         private var priceGreen: Int = 0
+        private var noChangeBlack : Int = 0
+
         init {
             this.list = list
             this.inflater = LayoutInflater.from(context)
             this.context = context
-
+            GlobalDataCollection.instance
             choose = context?.getDrawable(R.mipmap.rma_choose)
             unChoose = context?.getDrawable(R.mipmap.rma_un_choose)
             pink = context?.getDrawable(R.drawable.rma_red)
             green = context?.getDrawable(R.drawable.rma_green)
             priceGreen = context?.getColor(R.color.p_price_green)!!
             priceRed = context.getColor(R.color.p_price_red)
+            noChange = context.getDrawable(R.drawable.rma_white)
+            noChangeBlack = context.getColor(R.color.rma_black_33)
         }
 
         override fun getItemCount(): Int {
@@ -59,38 +106,74 @@ class MarketBaseModel : BaseViewModel() {
             var idIsChoose = itemView?.findViewById<ImageView>(R.id.id_is_choose)
             var idGoodsName = itemView?.findViewById<TextView>(R.id.id_goods_name)
             var idGoodsCode = itemView?.findViewById<TextView>(R.id.id_goods_code)
-            var idPrice = itemView?.findViewById<TextView>(R.id.id_price)
-            var idUpDown = itemView?.findViewById<TextView>(R.id.id_up_down)
-            var idHoldTotal = itemView?.findViewById<TextView>(R.id.id_hold_total)
+            var idPrice = itemView?.findViewById<TextView>(R.id.id_price)//价格
+            var idUpDown = itemView?.findViewById<TextView>(R.id.id_up_down)//涨跌幅
+            var idHoldTotal = itemView?.findViewById<TextView>(R.id.id_hold_total)//持仓量
         }
 
         override fun onBindViewHolder(holder: MarketHolder, position: Int) {
-            holder.idGoodsName?.text = list?.get(position)?.goodsName
-            holder.idGoodsCode?.text = list?.get(position)?.goodsCode
-            holder.idHoldTotal?.text = list?.get(position)?.totals.toString()
-            holder.idUpDown?.text = list?.get(position)?.upDown.toString()
-            holder.idPrice?.text = list?.get(position)?.lastPrice.toString()
-
-            if (position % 2 == 0) {
-                holder.idUpDown?.background = green
-                holder.idUpDown?.setTextColor(priceGreen)
-                holder.idPrice?.background = green
-                holder.idPrice?.setTextColor(priceGreen)
-            } else {
-                holder.idUpDown?.background = pink
-                holder.idUpDown?.setTextColor(priceRed)
-                holder.idPrice?.background = pink
-                holder.idPrice?.setTextColor(priceRed)
+            holder.idGoodsName?.text = list?.get(position)?.goodsname
+            holder.idGoodsCode?.text = list?.get(position)?.goodscode
+
+            //获取盘面信息
+            val quoteDayData = GlobalDataCollection.instance?.getmGoodsInfoClass()?.get(list?.get(position)?.outgoodscode)
+            if (quoteDayData != null){
+                //最新价->今开->昨结 价格
+                if (quoteDayData.last != 0.0){//优先最新价
+                    holder.idPrice?.text = quoteDayData.last.toString()
+                }else{//今开
+                    if (quoteDayData.opened != 0.0){
+                        holder.idPrice?.text = quoteDayData.opened.toString()
+                    }else{//昨结
+                        if (quoteDayData.preclose != 0.0){
+                            holder.idPrice?.text = quoteDayData.preclose.toString()
+                        }else{
+                            holder.idPrice?.text = "--"
+                        }
+                    }
+                }
+
+                //涨跌
+                if (quoteDayData.last != 0.0 && quoteDayData.preclose != 0.0){
+                    holder.idUpDown?.text = quoteDayData.last.minus(quoteDayData.preclose).toString()
+                }else{
+                    holder.idUpDown?.text = "--"
+                }
+
+                 val upDown = quoteDayData.last.minus(quoteDayData.preclose)
+                if (upDown == 0.0){
+                    holder.idUpDown?.background = noChange
+                    holder.idUpDown?.setTextColor(noChangeBlack)
+                    holder.idPrice?.background = noChange
+                    holder.idPrice?.setTextColor(noChangeBlack)
+                }else if (upDown > 0){
+                    holder.idUpDown?.background = pink
+                    holder.idUpDown?.setTextColor(priceRed)
+                    holder.idPrice?.background = pink
+                    holder.idPrice?.setTextColor(priceRed)
+                }else if (upDown < 0){
+                    holder.idUpDown?.background = green
+                    holder.idUpDown?.setTextColor(priceGreen)
+                    holder.idPrice?.background = green
+                    holder.idPrice?.setTextColor(priceGreen)
+                }
+
+                holder.idHoldTotal?.text = quoteDayData.totalvolume
+            }else{
+                holder.idHoldTotal?.text = "--"
+                holder.idUpDown?.text = "--"
+                holder.idPrice?.text = "--"
             }
 
+
             // 是否自选的
-            if (list?.get(position)?.isChoose == true) {
-                holder.idIsChoose?.setImageDrawable(choose)
-            } else {
-                holder.idIsChoose?.setImageDrawable(unChoose)
-            }
+//            if (list?.get(position)?.isChoose == true) {
+            holder.idIsChoose?.setImageDrawable(choose)
+//            } else {
+//                holder.idIsChoose?.setImageDrawable(unChoose)
+//            }
             holder.idChoose?.setOnClickListener {
-                ToastUtils.showShort(list?.get(position)?.goodsName)
+                ToastUtils.showShort(list?.get(position)?.goodsname)
             }
         }
 

+ 60 - 16
RMA/app/src/main/java/cn/muchinfo/rma/view/base/future/markets/MarketFragment.kt

@@ -6,23 +6,34 @@ import android.view.View
 import android.view.ViewGroup
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_DRAGGING
+import androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.data.account.loginQeruy.ExternalExchanges
+import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsGroups
+import cn.muchinfo.rma.global.data.account.loginQeruy.GoodsInfo
+import cn.muchinfo.rma.global.database.AppDatabase
+import cn.muchinfo.rma.global.room.Builder
 import cn.muchinfo.rma.view.base.BaseFragment
 
 /**
  * 报价牌的通用fragment
  */
-class MarketFragment(type: String): BaseFragment<MarketBaseModel>() {
+class MarketFragment(data: ExternalExchanges) : BaseFragment<MarketBaseModel>() {
 
-    var type: String? = type
+    var data: ExternalExchanges? = data
 
     companion object {
-        fun getInstance(type: String) = MarketFragment(type)
+        fun getInstance(data: ExternalExchanges) = MarketFragment(data)
     }
 
-//region views
+    //region views
     private var _view: View? = null
     private var idMarketList: RecyclerView? = null // 列表
+
+    var fistShow: Int = 0
+    var lastShow: Int = 0
 //endregion
 
     override fun onCreateView(
@@ -31,28 +42,61 @@ class MarketFragment(type: String): BaseFragment<MarketBaseModel>() {
         savedInstanceState: Bundle?
     ): View? {
         _view = inflater.inflate(R.layout.market_fragment, container, false)
-        viewModel.type = type
+        viewModel.type = data?.exexchangename
         initViews()
         return _view
     }
 
     private fun initViews() {
         idMarketList = _view?.findViewById(R.id.id_market_list)
-        val list: ArrayList<MarketData>? = ArrayList()
-        for (a in 1..10) {
-            val m = MarketData()
-            m.goodsName = "铁矿石" + (2105 + a)
-            m.goodsCode = "I" + (2105 + a)
-            m.lastPrice = 998.0 + a
-            m.upDown = 1.0 + a
-            m.totals = 1000.0 + a
-            m.isChoose = a % 2 == 0
-            list?.add(m)
+
+        val goodsGroupData = GlobalDataCollection.instance?.loginQueryData?.goodsgroups?.find {
+            it.goodsgroupid == data?.autoid
         }
+        val list = Builder.getDatabase<AppDatabase>().goodsInfoDao.getGoodsGroups(
+            goodsGroupData?.goodsgroupid ?: 0
+        )
+        if (list.size > 10){
+            lastShow = 10
+        }else{
+            if (list.size > 0){
+                lastShow = list.size
+            }
+        }
+
         val layoutManager = LinearLayoutManager(context)
         idMarketList?.layoutManager = layoutManager
         viewModel.list = list
-        idMarketList?.adapter = viewModel.getAdapter()
+        val adapter = viewModel.getAdapter()
+        idMarketList?.adapter = adapter
+        if (fistShow != -1 && lastShow != -1){
+            viewModel.queryQuoteDay(first = fistShow,last = lastShow){isCompleted, err ->
+                if (isCompleted){
+                    adapter.notifyItemRangeChanged(fistShow,lastShow)
+                }
+            }
+        }
+
+
+        idMarketList?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
+            override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
+                super.onScrollStateChanged(recyclerView, newState)
+                // DES: 找出当前可视Item位置
+                val linearLayoutManager = idMarketList!!.layoutManager as LinearLayoutManager
+                if (newState == RecyclerView.SCROLL_STATE_IDLE) {// 这个判断是当recyclerview不滚动时
+                    fistShow = linearLayoutManager.findFirstVisibleItemPosition()//获取第一个显示条目
+                    lastShow = linearLayoutManager.findLastVisibleItemPosition()//获取最后一个显示条目
+                    if (fistShow != -1 && lastShow != -1){
+                        viewModel.queryQuoteDay(first = fistShow,last = lastShow){isCompleted, err ->
+                            if (isCompleted){
+                                adapter.notifyItemRangeChanged(fistShow,lastShow)
+                            }
+                        }
+                    }
+
+                }
+            }
+        })
     }
 
 //region 函数

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

@@ -0,0 +1,79 @@
+package cn.muchinfo.rma.view.base.future.trade
+
+import android.os.Bundle
+import android.view.Gravity
+import androidx.appcompat.app.AppCompatActivity
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import cn.muchinfo.rma.view.eventbus.EventConstent
+import cn.muchinfo.rma.view.eventbus.MessageEvent
+import mtp.polymer.com.autowidget.dialog.creatSelectAccountDialog
+import org.greenrobot.eventbus.EventBus
+import org.jetbrains.anko.*
+
+/**
+ * 期货交易页面
+ */
+class GoodsTradeActivity : BaseActivity<GoodsTradeViewModel>(){
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        /**
+         * 页面ui
+         */
+        verticalLayout {
+            background = resources.getDrawable(R.color.segtabment_bg_color)
+            //头部标题
+            linearLayout {
+                background = resources.getDrawable(R.color.main_title_bg_color)
+                gravity = Gravity.CENTER_VERTICAL
+                imageView {
+                    imageResource = R.mipmap.back
+                    onThrottleFirstClick {
+                        finish()
+                    }
+                }.lparams(autoSize(48), autoSize(48)){
+                    marginStart = autoSize(36)
+                }
+
+                emptyView()
+
+                verticalLayout {
+                    /** 资金账户选择 **/
+                    onThrottleFirstClick {
+                        (context as AppCompatActivity).creatSelectAccountDialog{
+                            EventBus.getDefault().post(MessageEvent(EventConstent.USERACCOUNTCHANGE))
+                        }.show()
+                    }
+                    textView {
+                        text = "交易"
+                        textColorInt = R.color.white
+                        textSizeAuto = 36
+                    }.lparams(wrapContent, wrapContent) {
+                        gravity = Gravity.CENTER_HORIZONTAL
+                    }
+                    textView {
+                        text = "张三(100000)"
+                        textColorStr = "#AED6F0"
+                        textSizeAuto = 29
+                    }.lparams(wrapContent, wrapContent) {
+                        gravity = Gravity.CENTER_HORIZONTAL
+                    }
+                }.lparams(wrapContent, autoSize(90))
+
+                emptyView()
+
+                view {
+
+                }.lparams(autoSize(48), autoSize(48)){
+                    marginEnd = autoSize(36)
+                }
+            }.lparams(matchParent, autoSize(120))
+        }
+    }
+
+
+
+}

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

@@ -0,0 +1,12 @@
+package cn.muchinfo.rma.view.base.future.trade
+
+import cn.muchinfo.rma.view.base.BaseViewModel
+
+/**
+ * 期货交易页面额viewmodel
+ */
+class GoodsTradeViewModel : BaseViewModel(){
+
+
+
+}

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

@@ -23,6 +23,7 @@ import cn.muchinfo.rma.global.data.NoticeData
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseFragment
+import cn.muchinfo.rma.view.base.future.trade.GoodsTradeActivity
 import cn.muchinfo.rma.view.base.home.business.BusinessManagementActivity
 import cn.muchinfo.rma.view.base.home.commodity.CommodityInformationActivity
 import cn.muchinfo.rma.view.base.home.contract.ContractActivity
@@ -144,7 +145,7 @@ class HomeFragment : BaseFragment<HomeViewModel>() {
                             viewModel.usedAccountData.bindOptional(context){
                                 text = it?.accountname
                             }
-                            text = GlobalDataCollection.getInstance().loginRsp.userID.toString()
+                            text = GlobalDataCollection.instance?.loginRsp?.userID.toString()
                             textColorInt = R.color.white
                             textSizeAuto = 36
                         }.lparams(wrapContent, wrapContent) {
@@ -164,6 +165,11 @@ class HomeFragment : BaseFragment<HomeViewModel>() {
                     }
 
                     imageView {
+                        onThrottleFirstClick {
+                            val intent = Intent()
+                            intent.setClass(context, GoodsTradeActivity::class.java)
+                            ActivityUtils.startActivity(intent)
+                        }
                         imageResource = R.mipmap.main_search
                     }.lparams(autoSize(45), autoSize(45)) {
                         marginStart = autoSize(32)

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

@@ -76,9 +76,9 @@ class HomeViewModel : BaseViewModel(){
      * 更新hoefragment的account
      */
     fun initAccountData(){
-        val accountDataList = GlobalDataCollection.getInstance().accountDataList
+        val accountDataList = GlobalDataCollection.instance?.accountDataList
         if (accountDataList.isNullOrEmpty().not()){
-            usedAccountData.postValue(accountDataList.get(0))
+            usedAccountData.postValue(accountDataList?.get(0))
         }
     }
 
@@ -87,7 +87,7 @@ class HomeViewModel : BaseViewModel(){
      */
     fun queryNotice(){
         val params = mutableMapOf<String, String>().apply {
-            put("loginID", GlobalDataCollection.getInstance().loginRsp.loginID.toString())
+            put("loginID", GlobalDataCollection.instance?.loginRsp?.loginID.toString())
         }
 
         MyApplication.getInstance()?.commonManager?.queryNotice(params = params){ isSuccess, respData, error ->

+ 3 - 3
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/business/BusinessManagementViewModel.kt

@@ -84,7 +84,7 @@ class BusinessManagementViewModel : BaseViewModel() {
      */
     fun queryBusinessDJ() {
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
         MyApplication.getInstance()?.businessManager?.queryBusinessDJ(params) { isSuccess, respData, _ ->
             if (isSuccess){
@@ -102,7 +102,7 @@ class BusinessManagementViewModel : BaseViewModel() {
      */
     fun queryBusinessJS() {
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
 
         MyApplication.getInstance()?.businessManager?.queryBusinessJSEx(params) { isSuccess, respData, _ ->
@@ -121,7 +121,7 @@ class BusinessManagementViewModel : BaseViewModel() {
     fun queryBusinessDetails(relatedid : String){
         loadingDataDialogStatus.value = TaskUiModel.inFlight()
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("relatedid",relatedid)
         }
         MyApplication.getInstance()?.businessManager?.queryBusinessJSDetail(params = params){ isSuccess, respData, err ->

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

@@ -11,6 +11,7 @@ import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.AvaildGoodsGroupData
 import cn.muchinfo.rma.global.data.GGConvertConfigData
 import cn.muchinfo.rma.global.data.MiddleGoodsData
+import cn.muchinfo.rma.global.isBlankString
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.base.BaseActivity
@@ -76,7 +77,20 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
             topBar {
                 commonLeftButton()
                 commonTitle {
-                    text = "新增套保品种"
+                    when (type) {
+                        "1" -> {
+                            text = "新增套保品种"
+                        }
+                        "2" -> {
+                            text = "修改套保品种"
+                        }
+                        "3" -> {
+                            text = "停用套保品种"
+                        }
+                        "5" -> {
+                            text = "恢复套保品种"
+                        }
+                    }
                 }
             }
 
@@ -187,7 +201,7 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
 
                             textView {
                                 selectAvalidGoodsData.bindOptional(context) {
-                                    text = it?.goodunitname
+                                    text = it?.goodunitname?.isBlankString()
                                 }
                                 text = "请选择套保品种自动填入"
                                 textSizeAuto = 31
@@ -298,7 +312,7 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                                     goodsunitid = data1?.goodunitid?.toInt() ?: 0,
                                     goodsgroupid = data1?.goodsgroupid?.toLong() ?: 0,
                                     remark = remask_edittext.text.toString(),
-                                    areauserid = GlobalDataCollection.getInstance().loginRsp.userID.toLong(),
+                                    areauserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0,
                                     needhedgeratio = hedge_ratio_edtittext.text.toString()
                                         .toDouble()
                                 ) {
@@ -310,7 +324,7 @@ class AddHedgeGoodsActivity : BaseActivity<CommodityInformationViewModel>() {
                                     needhedgeratio = hedge_ratio_edtittext.text.toString()
                                         .toDouble() ?: 0.0,
                                     goodsgroupid = data.goodsgroupid?.toLong() ?: 0,
-                                    areauserid = GlobalDataCollection.getInstance().loginRsp.userID.toLong(),
+                                    areauserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0,
                                     remark = remask_edittext.text.toString()
                                 ) {
                                     finish()

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

@@ -93,7 +93,7 @@ class CommodityInformationViewModel : BaseViewModel() {
      */
     fun queryAvalidGoods() {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
         MyApplication.getInstance()?.commodityManager?.queryAvalidGoods(params = params) { isSuccess, respData, error ->
             if (isSuccess) {
@@ -110,7 +110,7 @@ class CommodityInformationViewModel : BaseViewModel() {
         select: (AvaildGoodsGroupData.() -> Unit)? = null
     ) {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("middlegoodsid", middlegoodsid)
         }
         MyApplication.getInstance()?.commodityManager?.queryMiddleGoodsDetail(params = params) { isSuccess, respData, error ->
@@ -131,7 +131,7 @@ class CommodityInformationViewModel : BaseViewModel() {
         select: (List<AvaildGoodsGroupData>.() -> Unit)? = null
     ) {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("middlegoodsid", middlegoodsid)
         }
         MyApplication.getInstance()?.commodityManager?.queryMiddleGoodsDetail(params = params) { isSuccess, respData, error ->
@@ -368,7 +368,7 @@ class CommodityInformationViewModel : BaseViewModel() {
         status: String
     ) {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("status", status)
         }
         MyApplication.getInstance()?.commodityManager?.queryWrStandard(params = params) { isSuccess, respData, _ ->
@@ -388,7 +388,7 @@ class CommodityInformationViewModel : BaseViewModel() {
      */
     fun queryWrStandardDetails(wrstandardid: String) {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("wrstandardid", wrstandardid)
         }
         MyApplication.getInstance()?.commodityManager?.queryWrStandardDetail(params = params) { isSuccess, respData, _ ->
@@ -444,7 +444,7 @@ class CommodityInformationViewModel : BaseViewModel() {
      */
     fun queryMiddleGoodsList(status: String) {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("status", status)
         }
         MyApplication.getInstance()?.commodityManager?.queryMiddleGoods(params = params) { isSuccess, respData, _ ->
@@ -465,7 +465,7 @@ class CommodityInformationViewModel : BaseViewModel() {
      */
     fun queryMiddleGoodsDetails(middlegoodsid: String) {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("middlegoodsid", middlegoodsid)
         }
         MyApplication.getInstance()?.commodityManager?.queryMiddleGoodsDetails(params = params) { isSuccess, respData, _ ->

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

@@ -302,7 +302,7 @@ class AddContractActivity : BaseActivity<ContractViewModel>() {
                                 // FIXME 后期查询用户资料后需要填写用户名
                                 contractType.bindOptional(context) {
                                     text = if (it?.id == "1") {
-                                        GlobalDataCollection.getInstance().userAccountData.accountname
+                                        GlobalDataCollection.instance?.userAccountData?.accountname
                                     } else {
                                         "请选择客户"
                                     }
@@ -376,7 +376,7 @@ class AddContractActivity : BaseActivity<ContractViewModel>() {
                                 // FIXME 后期查询用户资料后需要填写用户名
                                 contractType.bindOptional(context) {
                                     text = if (it?.id == "-1") {
-                                        GlobalDataCollection.getInstance().userAccountData.accountname
+                                        GlobalDataCollection.instance?.userAccountData?.accountname
                                     } else {
                                         "请选择客户"
                                     }
@@ -1341,7 +1341,7 @@ class AddContractActivity : BaseActivity<ContractViewModel>() {
 
     private fun getContractInfo() : SpotContractInfo{
         val contractInfo = SpotContractInfo()
-        val userid = GlobalDataCollection.getInstance().loginRsp.userID
+        val userid = GlobalDataCollection.instance?.loginRsp?.userID ?: 0
         if (contractNo.text.toString().isNotEmpty()){
             contractInfo.ContractNo = contractNo.text.toString()
         }

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

@@ -138,7 +138,7 @@ class ContractViewModel : BaseViewModel() {
     fun queryContract(QueryType: String) {
 
         val params = mutableMapOf<String, String>().apply {
-            put("userId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("QueryType", QueryType)
         }
 
@@ -171,7 +171,7 @@ class ContractViewModel : BaseViewModel() {
      */
     fun queryUserInfo() {
         val params = mutableMapOf<String, String>().apply {
-            put("MemberUserID", GlobalDataCollection.getInstance().loginRsp.memberUserID.toString())
+            put("MemberUserID", GlobalDataCollection.instance?.loginRsp?.memberUserID.toString())
             put("queryType", "3")
         }
 
@@ -201,7 +201,7 @@ class ContractViewModel : BaseViewModel() {
      */
     fun queryWrStandardList() {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("status", "1")
         }
         MyApplication.getInstance()?.commodityManager?.queryWrStandard(params) { isSuccess, respData, error ->
@@ -237,7 +237,7 @@ class ContractViewModel : BaseViewModel() {
      */
     fun queryWrStandardDetail(wrstandardid: String) {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("wrstandardid", wrstandardid)
         }
 

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

@@ -665,7 +665,7 @@ class AddCustomerDataActivity : BaseActivity<CustomerDataViewModel>() {
                                 commit(true)
                             }else{//审核拒绝
                                 viewModel.requestUserInfoCheckMange(
-                                    auditflag = 2,userid = data.userid?.toLong() ?: 0,audituserid = GlobalDataCollection.getInstance().loginRsp.userID.toLong(),remark = remark.text.toString()
+                                    auditflag = 2,userid = data.userid?.toLong() ?: 0,audituserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0,remark = remark.text.toString()
                                 ){
                                     finish()
                                 }
@@ -695,7 +695,7 @@ class AddCustomerDataActivity : BaseActivity<CustomerDataViewModel>() {
                                 commit(false)
                             }else{//审核通过
                                 viewModel.requestUserInfoCheckMange(
-                                    auditflag = 1,userid = data.userid?.toLong() ?: 0,audituserid = GlobalDataCollection.getInstance().loginRsp.userID.toLong(),remark = remark.text.toString()
+                                    auditflag = 1,userid = data.userid?.toLong() ?: 0,audituserid = GlobalDataCollection.instance?.loginRsp?.userID?.toLong() ?: 0,remark = remark.text.toString()
                                 ){
                                     finish()
                                 }
@@ -877,7 +877,7 @@ class AddCustomerDataActivity : BaseActivity<CustomerDataViewModel>() {
         params["userstate"] = if (isDraft) 1 else 2
         // 所属机构
         // FIXME: - 这里应该判断一下UserID是否为0
-        params["memberareaid"] = GlobalDataCollection.getInstance().loginRsp.userID
+        params["memberareaid"] = GlobalDataCollection.instance?.loginRsp?.userID ?: 0
 
         // 证件类型
         if (cardType.value?.id?.isNullOrEmpty() == false) {

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

@@ -113,7 +113,7 @@ class CustomerDataViewModel : BaseViewModel() {
 //        unSubmitList.value = arrayListOf(UserInfoData(address = "1"),UserInfoData(address = "2"),UserInfoData(address = "3"))
         loadingDialogStatus.value = TaskUiModel.inFlight()
         val params = mutableMapOf<String, String>().apply {
-            put("MemberUserID", GlobalDataCollection.getInstance().loginRsp.memberUserID.toString())
+            put("MemberUserID", GlobalDataCollection.instance?.loginRsp?.memberUserID.toString())
             put("queryType", type)
         }
         MyApplication.getInstance()?.customerManage?.queryUserInfo(params) { isSuccess, respData, error ->

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

@@ -70,7 +70,7 @@ class FinancialViewModel : BaseViewModel(){
      */
     fun queryBusinessKx(){
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
 
         MyApplication.getInstance()?.financialManager?.queryBusinessKx(params = params){isSuccess, respData, error ->
@@ -85,7 +85,7 @@ class FinancialViewModel : BaseViewModel(){
      */
     fun queryBusinessFp(){
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
         }
 
         MyApplication.getInstance()?.financialManager?.queryBusinessFp(params = params){isSuccess, respData, error ->

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

@@ -466,7 +466,7 @@ class AddHedgePlanActivity : BaseActivity<HedgePlanViewModel>() {
 
         hedgePlanInfo.DeliveryGoodsID = selectWrStandardData.value?.deliverygoodsid?.toInt()!!
         hedgePlanInfo.WrStandardID = selectWrStandardData.value?.id?.toInt()!!
-        hedgePlanInfo.AreaUserID = GlobalDataCollection.getInstance().loginRsp.userID
+        hedgePlanInfo.AreaUserID = GlobalDataCollection.instance?.loginRsp?.userID ?: 0
         hedgePlanInfo.ProductType = 1//写死为1产品类型
         hedgePlanInfo.SpotGoodsDesc = "咳咳咳"
 

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

@@ -104,7 +104,7 @@ class HedgePlanViewModel : BaseViewModel() {
      */
     fun queryHedegList(type: String) {
         val params = mutableMapOf<String, String>().apply {
-            put("userId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             if (type == "0"){
                 put("HedgePlanStatus", "0,6")
             } else if (type == "1"){
@@ -137,7 +137,7 @@ class HedgePlanViewModel : BaseViewModel() {
      */
     fun queryWrStandardList() {
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("status", "1")
         }
         MyApplication.getInstance()?.commodityManager?.queryWrStandard(params) { isSuccess, respData, error ->

+ 9 - 9
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/reportquery/ReportQueryViewModel.kt

@@ -73,7 +73,7 @@ class ReportQueryViewModel : BaseViewModel(){
         }
 
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("tradedate", tradedate)
         }
 
@@ -94,7 +94,7 @@ class ReportQueryViewModel : BaseViewModel(){
      */
     fun qryReportDayFinanceKx(tradedate : String){
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("tradedate", tradedate)
         }
 
@@ -111,7 +111,7 @@ class ReportQueryViewModel : BaseViewModel(){
      */
     fun qryReportDayFinanceFp(tradedate : String){
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("tradedate", tradedate)
         }
 
@@ -128,7 +128,7 @@ class ReportQueryViewModel : BaseViewModel(){
      */
     fun qryReportMonthFinance(cycletime : String){
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("cycletime", cycletime)
         }
 
@@ -152,7 +152,7 @@ class ReportQueryViewModel : BaseViewModel(){
      */
     fun qryReportDayExposure(tradedate: String){
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("tradedate", tradedate)
         }
 
@@ -169,7 +169,7 @@ class ReportQueryViewModel : BaseViewModel(){
      */
     fun qryReportDaySpot(tradedate : String){
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("tradedate", tradedate)
         }
         MyApplication.getInstance()?.reportManager?.qryReportDaySpot(params = params){isSuccess, respData, error ->
@@ -185,7 +185,7 @@ class ReportQueryViewModel : BaseViewModel(){
      */
     fun qryReportMonthSpot(tradedate : String){
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("tradedate", tradedate)
         }
         MyApplication.getInstance()?.reportManager?.qryReportMonthSpot(params = params){isSuccess, respData, error ->
@@ -222,7 +222,7 @@ class ReportQueryViewModel : BaseViewModel(){
      */
     fun qryReportDaySpotDetail(wrstandardid : String,tradedate : String){
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("wrstandardid", wrstandardid)
             put("tradedate", tradedate)
         }
@@ -241,7 +241,7 @@ class ReportQueryViewModel : BaseViewModel(){
      */
     fun qryReportMonthSpotDetail(wrstandardid : String,cycletime : String){
         val params = mutableMapOf<String, String>().apply {
-            put("userid", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("wrstandardid", wrstandardid)
             put("cycletime", cycletime)
         }

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

@@ -454,7 +454,7 @@ class MoneyFlowingUI(
     private lateinit var swipeToLayout: SwipeToLoadLayout
     private lateinit var statusLayout: StatusLayout
 
-    var startTime: String = GlobalDataCollection.getInstance().oneMonth()//历史资金流水查询起始日期
+    var startTime: String = GlobalDataCollection.instance?.oneMonth() ?: ""//历史资金流水查询起始日期
     var endTime: String = TimeUtils.getNowString(SimpleDateFormat("yyyy-MM-dd"))//历史资金流水查询结束日期
 
 

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

@@ -20,7 +20,7 @@ class TradingQueryViewModel : BaseViewModel(){
      */
     fun queryHisAmountLog(startDate : String = "",endDate : String = ""){
         val params = mutableMapOf<String, String>().apply {
-            put("accountID", GlobalDataCollection.getInstance().loginRsp.memberUserID.toString())
+            put("accountID", GlobalDataCollection.instance?.loginRsp?.memberUserID.toString())
             if (startDate.isNotEmpty()){
                 put("startDate", startDate)
             }

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

@@ -11,6 +11,7 @@ import cn.muchinfo.rma.business.future.FutureManager
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.netManage.base.InteractiveException
 import cn.muchinfo.rma.view.MainActivity
+import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.autoWidget.autoSize
 import cn.muchinfo.rma.view.autoWidget.textColorInt
 import cn.muchinfo.rma.view.autoWidget.textSizeAuto
@@ -189,26 +190,26 @@ class LoginActivity : BaseActivity<LoginViewModel>() {
             GlobalScope.launch(Dispatchers.Main) {
                 if (!isCompleted) {
                     viewModel.loadingDialogStatus.value =
-                        TaskUiModel.failed(InteractiveException(GlobalDataCollection.getInstance().getErrorString(err?.message ?: "")))
+                        TaskUiModel.failed(InteractiveException(GlobalDataCollection.instance?.getErrorString(err?.message ?: "") ?: "") )
                     return@launch
                 }
                 viewModel.loginQuery { isCompleted, err ->
-                    run {
-                        if (!isCompleted) {
-                            viewModel.loadingDialogStatus.value =
-                                TaskUiModel.failed(
-                                    InteractiveException(
-                                        GlobalDataCollection.getInstance()
-                                            .getErrorString(err?.message ?: "")
-                                    )
+//                    run {
+//
+//                    }
+                    if (!isCompleted) {
+                        viewModel.loadingDialogStatus.value =
+                            TaskUiModel.failed(
+                                InteractiveException(
+                                    GlobalDataCollection.instance
+                                        ?.getErrorString(err?.message ?: "") ?: ""
                                 )
-                            return@loginQuery
-                        }
-                        FutureManager().queryGoodsList { isCompleted, err ->
-
-                            viewModel.loadingDialogStatus.value = TaskUiModel.success(msg = "登录成功")
-                            goHomePage()
-                        }
+                            )
+                        return@loginQuery
+                    }
+                    MyApplication.getInstance()?.futureManager?.queryGoodsList { isCompleted, err ->
+                        viewModel.loadingDialogStatus.value = TaskUiModel.success(msg = "登录成功")
+                        goHomePage()
                     }
                 }
             }

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

@@ -127,7 +127,7 @@ class ProcurementViewModel : BaseViewModel() {
      */
     fun queryContract(type: String,contracttype : String) {
         val params = mutableMapOf<String, String>().apply {
-            put("userId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("contracttype", contracttype)
             put("querytype", type)
         }
@@ -312,7 +312,7 @@ class ProcurementViewModel : BaseViewModel() {
      */
     fun queryBusinessDJ(relatedid : String) {
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("relatedid", relatedid)
         }
         MyApplication.getInstance()?.businessManager?.queryBusinessDJ(params) { isSuccess, respData, _ ->
@@ -331,7 +331,7 @@ class ProcurementViewModel : BaseViewModel() {
      */
     fun queryBusinessJS(relatedid : String) {
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("relatedid", relatedid)
         }
 
@@ -351,7 +351,7 @@ class ProcurementViewModel : BaseViewModel() {
      */
     fun queryBusinessKx(relatedid : String){
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("relatedid", relatedid)
         }
 
@@ -368,7 +368,7 @@ class ProcurementViewModel : BaseViewModel() {
      */
     fun queryBusinessFp(relatedid : String){
         val params = mutableMapOf<String, String>().apply {
-            put("UserId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("UserId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("relatedid", relatedid)
         }
 

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

@@ -98,7 +98,7 @@ class SaleViewModel : BaseViewModel(){
      */
     fun queryContract(type: String,contracttype : String) {
         val params = mutableMapOf<String, String>().apply {
-            put("userId", GlobalDataCollection.getInstance().loginRsp.userID.toString())
+            put("userId", GlobalDataCollection.instance?.loginRsp?.userID.toString())
             put("contracttype", contracttype)
             put("querytype", type)
         }

+ 5 - 0
RMA/app/src/main/res/drawable/rma_white.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="2.5dp"/>
+    <solid android:color="@color/white"/>
+</shape>