Bläddra i källkod

解决部分bug

yu.jie 3 år sedan
förälder
incheckning
6944307a76

+ 34 - 0
RMA/app/src/main/java/cn/muchinfo/rma/global/StringUtils.kt

@@ -198,6 +198,24 @@ fun String.toPercentage() : String{
     return NumberUtils.roundNum(toDouble().times(100),2) + "%"
 }
 
+fun String.toPercentage2() : String{
+    if (this.isEmpty()){
+        return "--"
+    }
+    var values = toDouble().times(100).toString()
+    var list = values.split(".")
+
+    if(list.size == 2){
+        if(list[1] == "0"){
+            return list[0] + "." + list[1] + "0%"
+        }else if (list[1].length >= 2){
+            return list[0] + "." + list[1].subSequence(0,2) + "%"
+        }
+    }
+
+    return NumberUtils.roundNum(toDouble().times(100),2) + "%"
+}
+
 fun String.toWanPercentage() : String{
     if (this.isEmpty()){
         return "--"
@@ -235,6 +253,22 @@ fun String.toShowTime(format : String = "yyyy-MM-dd HH:mm:ss") : String{
     return timeString
 }
 
+fun String.toShowTimeT(format : String = "yyyy-MM-dd HH:mm:ss") : String{
+    if (this.isNullOrEmpty()){
+        return "--"
+    }
+    val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+    val sdf1 = SimpleDateFormat(format, Locale.CHINA)
+    var timeString = sdf1.format(sdf.parse(this.replace("T"," ").replace("+08:00",""))!!)
+    if (TimeUtils.getNowString(TimeUtils.getSafeDateFormat("yyyy-MM-dd")) == timeString.split(" ").get(0)){
+//    if (TimeUtils.isToday(timeString)){
+        timeString = timeString.split(" ").get(1)
+    }
+    return timeString
+}
+
+
+
 /**
  * 和isShowTimeString的接收时间格式不同
  * @receiver String

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

@@ -1,11 +1,8 @@
 package cn.muchinfo.rma.view.base.chart;
 
-import cn.muchinfo.rma.global.GlobalDataCollection
+import cn.muchinfo.rma.global.*
 import cn.muchinfo.rma.global.data.GoodsInfoAndQuotes
 import cn.muchinfo.rma.global.data.chart.HistoryDatas
-import cn.muchinfo.rma.global.toShowTime
-import cn.muchinfo.rma.global.toTimeData
-import cn.muchinfo.rma.global.toTimeNormalData
 import cn.muchinfo.rma.view.base.chart.old.controls.MTPChartControl
 import com.blankj.utilcode.util.TimeUtils
 import com.desfate.chart.data.ChartData
@@ -71,7 +68,7 @@ class ChartDataAdapter {
                 ohlcEntity.high = it.getHighestPrice().toDouble()
                 ohlcEntity.low = it.getLowestPrice().toDouble()
                 ohlcEntity.open = it.getOpeningPrice().toDouble()
-                ohlcEntity.time = it.getTime().toShowTime()
+                ohlcEntity.time = it.getTime().toShowTimeT()
                 ohlcEntity
             }
         }

+ 46 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/chart/old/timeCharts/KChartView.java

@@ -45,7 +45,9 @@ public class KChartView extends FrameLayout  implements ITouchEventResponse {
     String state = ChartConstant.BIAS;
     TextView upText;
 
+    String goodsCode = "";
     List<HistoryDatas> history = new ArrayList<>();
+    List<HistoryDatas> saveHistory = new ArrayList<>();
     public KChartView(@NonNull Context context) {
         super(context);
         this.context = context;
@@ -159,8 +161,11 @@ public class KChartView extends FrameLayout  implements ITouchEventResponse {
      */
     public void setDates(String goodsCode, List<HistoryDatas> history){
         if(history == null || history.isEmpty()) return; // 没有数据
+        this.goodsCode = goodsCode;
         this.history.clear();
         this.history.addAll(history);
+        this.saveHistory.clear();
+        this.saveHistory.addAll(this.history);
         // 这是需要画的线
         List<LineEntity> lines = new ArrayList<>();
         LineEntity M5Line = new LineEntity();;
@@ -365,8 +370,49 @@ public class KChartView extends FrameLayout  implements ITouchEventResponse {
                 }
     }
 
+
+    /**
+     * 更新主数据
+     *
+     * @param lastDate 最新数据
+     */
+    public void refreshDate(HistoryDatas lastDate) {
+        if (this.saveHistory == null || this.saveHistory.size() == 0 || goodsCode.equals("")) return; // 没有数据
+        HistoryDatas lastData = this.saveHistory.get(this.saveHistory.size() - 1);
+        HistoryDatas nowData = lastDate;
+        if(new ChartDataAdapter().checkSameMin(nowData.getTime().replace("T"," ").replace("+08:00",""), lastData.getTime().replace("T"," ").replace("+08:00",""))){ // 不是同一分钟 则重新请求
+            this.saveHistory.add(lastDate);
+        }else{
+            if(kChartListener != null) kChartListener.onKRepairFail();
+        }
+        setDates(goodsCode, this.saveHistory);
+//        if(timeChartData.getHistoryDatas().get(timeChartData.getHistoryDatas().size() - 1).getTime())
+    }
+    /**
+     * 这个方法只负责最新价的标题显示以及绘制颜色值
+     *
+     * @param lastPrice  最新价q
+     * @param priceColor 最新价颜色
+     */
+    public void setLastPrice(String lastPrice, int priceColor) {
+        candle_chart.setTasLastPrice(lastPrice);
+        candle_chart.setNewPriceColor(priceColor);
+        candle_chart.invalidate();
+    }
+
     private boolean isTimeCharts = false;
     public void setIsTimeChart(boolean isTimeChart){
         this.isTimeCharts = isTimeChart;
     }
+
+    public interface KChartListener {
+        void onKRepairFail();
+    }
+
+    private KChartListener kChartListener;
+
+    public void setKChartListener(KChartListener timeChartListener) {
+        this.kChartListener = kChartListener;
+    }
+
 }

+ 2 - 2
RMA/app/src/main/java/cn/muchinfo/rma/view/base/chart/old/timeCharts/TimeChartView.java

@@ -153,13 +153,13 @@ public class TimeChartView extends FrameLayout implements ITouchEventResponse {
      * @param priceColor 最新价颜色
      */
     public void setLastPrice(String lastPrice, int priceColor) {
-        // 最新的数据
-//        if(lastPrice == "31.01") return;
         lineChart.setTasLastPrice(lastPrice);
         lineChart.setNewPriceColor(priceColor);
         lineChart.invalidate();
     }
 
+    int index = 1;
+
     /**
      * 更新主数据
      *

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

@@ -17,6 +17,7 @@ import cn.muchinfo.rma.R
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.BankAccountSignData
 import cn.muchinfo.rma.global.toPercentage
+import cn.muchinfo.rma.global.toPercentage2
 import cn.muchinfo.rma.lifecycle.bindOptional
 import cn.muchinfo.rma.view.autoWidget.*
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
@@ -804,7 +805,7 @@ class HnstMainFragment : BaseFragment<HnstMainViewmodel>() {
                                             }
                                             text = NumberUtils.roundNum(
                                                 NumberUtils.doubleDistortion(risk.toString()), 4
-                                            ).toPercentage()
+                                            ).toPercentage2()
                                         } else {
                                             text = "****"
                                         }

+ 15 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/hnstmain/account/RydzAccountActivity.kt

@@ -20,6 +20,7 @@ import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.platinumtreasure.trade.MoneyFlowingVIewHolder
 import cn.muchinfo.rma.view.eventbus.EventConstent
 import cn.muchinfo.rma.view.eventbus.MessageEvent
+import cn.muchinfo.rma.view.eventbus.QuoteMessageEvent
 import com.blankj.utilcode.util.ConvertUtils
 import com.blankj.utilcode.util.SPUtils
 import com.qmuiteam.qmui.util.QMUIDisplayHelper
@@ -66,6 +67,20 @@ class RydzAccountActivity : BaseActivity<RydzAccountViewModel>() {
         }
     }
 
+    //行情推送通知
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onQuoteMessageEvent(quoteMessageEvent: QuoteMessageEvent) {
+        /** 行情推送过来的goodsid **/
+        quoteMessageEvent.goodsid.forEach { goodid ->
+            //找到相应商品信息
+            val goodsInfo =
+                GlobalDataCollection.instance?.contractTradePositionDataArrayList?.find { it.goodsid?.toInt() == goodid }
+            if (goodsInfo?.goodsid.isNullOrEmpty().not()) {
+                viewModel.getTaAccounts()
+            }
+        }
+    }
+
     override fun onDestroy() {
         super.onDestroy()
         EventBus.getDefault().unregister(this)

+ 27 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/yrdzpurchase/chart/YrdzChartActivity.kt

@@ -63,6 +63,9 @@ class YrdzChartActivity : BaseActivity<YrdzChartViewModel>() , View.OnClickListe
     lateinit var idFutureTab : QMUITabSegment
     lateinit var idMarketPager : ViewPager
 
+    var chatTypes: Int = 1 // 当前类型 1:分时图 2:k线
+    var saveTab :String = "";
+
     val goodsId by lazy { intent.getStringExtra("goodsId") }
 
     val goodsCode by lazy { intent.getStringExtra("goodsCode") }
@@ -347,15 +350,18 @@ class YrdzChartActivity : BaseActivity<YrdzChartViewModel>() , View.OnClickListe
             override fun onTabSelected(tab: TabLayout.Tab?) {
                 when(tab?.tag){
                     10086 -> {
+                        chatTypes = 1
                         kChartView.visibility = View.INVISIBLE
                         timeChartView.visibility = View.VISIBLE
                         viewModel.queryTimeChart()
                         progressBar.visibility = View.VISIBLE
                     }
                     1,2,3,11,12,13,14,4,240 -> {
+                        chatTypes = 2
                         kChartView.visibility = View.VISIBLE
                         timeChartView.visibility = View.INVISIBLE
                         viewModel.queryKChart( tab.tag.toString())
+                        saveTab = tab.tag.toString();
                         progressBar.visibility = View.VISIBLE
                     }
                 }
@@ -370,8 +376,18 @@ class YrdzChartActivity : BaseActivity<YrdzChartViewModel>() , View.OnClickListe
                 requestTime = TimeUtils.getNowMills()
             }
         }
+
+        kChartView.setKChartListener {
+            if(TimeUtils.getNowMills() - requestTime > 3500) {
+                if(saveTab != "") {
+                    viewModel.queryKChart(saveTab)
+                    requestKTime = TimeUtils.getNowMills()
+                }
+            }
+        }
     }
     var requestTime = TimeUtils.getNowMills()
+    var requestKTime = TimeUtils.getNowMills()
 
     override fun onClick(v: View?) {
         when(v?.id){
@@ -398,10 +414,17 @@ class YrdzChartActivity : BaseActivity<YrdzChartViewModel>() , View.OnClickListe
             if (quote != null){
                 viewModel.quoteDayData.postValue(quote)
             }
-            // 这里把当前最新价转化为历史
-            timeChartView.refreshDate(ChartDataAdapter().getHisTikData(viewModel.outGoodsCode))
-            // 这里更新最新价
-            viewModel.refreshTimePrice(timeChartView)
+            if (chatTypes == 1){
+                // 这里把当前最新价转化为历史
+                timeChartView.refreshDate(ChartDataAdapter().getHisTikData(viewModel.outGoodsCode))
+                // 这里更新最新价
+                viewModel.refreshTimePrice(timeChartView)
+            }else{
+                kChartView.refreshDate(ChartDataAdapter().getHisTikData(viewModel.outGoodsCode))
+                viewModel.refreshKPrice(kChartView)
+            }
+
+
         }
     }
 

+ 12 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/yrdzpurchase/chart/YrdzChartViewModel.kt

@@ -18,6 +18,7 @@ import cn.muchinfo.rma.global.room.Builder
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
 import cn.muchinfo.rma.view.base.chart.ChartDataAdapter
+import cn.muchinfo.rma.view.base.chart.old.timeCharts.KChartView
 import cn.muchinfo.rma.view.base.chart.old.timeCharts.TimeChartView
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
@@ -169,6 +170,17 @@ class YrdzChartViewModel : BaseViewModel() {
         }
     }
 
+
+
+    /**
+     * 更新分时图最新价
+     */
+    fun refreshKPrice(kChartView: KChartView){
+        kChartView.setLastPrice(
+            ChartDataAdapter().getGoodsInfoMarket(goodsCode)!!.quoteDayData.last.toString(), getColor(getApplication(),
+                R.color.p_down_color))
+    }
+
     /**
      * 更新分时图最新价
      */

+ 1 - 1
RMA/chart/src/main/java/com/desfate/chart/LineChart.java

@@ -108,8 +108,8 @@ public class LineChart extends GridChart {
     }
 
     public void setTasLastPrice(String tasLastPrice) {
-        this.tasLastPrice = tasLastPrice;
         super.setTasLastPrice(tasLastPrice);
+        this.tasLastPrice = tasLastPrice;
     }
 
     /*