Explorar el Código

commit 天津麦盾 仓单贸易大版本修改 备案提交 打包时记得回退 因为此版本尚不稳定

yu jie hace 3 años
padre
commit
0614fbea13

+ 100 - 0
RMA/app/buildTrace.gradle

@@ -0,0 +1,100 @@
+import java.text.SimpleDateFormat
+
+/**
+ * 监控构建耗时
+ *
+ * 记录构建过程中的每个任务的耗时,并写入文件中 .build_history/buildTimeLog_yy_MM_dd_HH_mm_ss.log中
+ *
+ * 使用时将文件放在app目录下,然后在app/build.gradle中添加引用:
+ * apply from: "./buildTrace.gradle"
+ */
+
+class BuildTimeListener implements TaskExecutionListener, BuildListener {
+    private final String BUILD_LOG_FILE_DIR = ".build_history"
+    private final String BUILD_LOG_FILE_PATH = "buildTimeLog"
+    private long taskStartTime;
+    private long buildStartTime;
+    private int taskCounts = 0;
+    private StringBuilder sb = new StringBuilder()
+    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+    private SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss")
+
+    BuildTimeListener() {
+        buildStartTime = System.currentTimeMillis()
+        //添加一些版本信息
+//        sb.append("codeTag:").append(ProjectConfig.codeTag).append("\n")
+//        sb.append("branch:").append(ProjectConfig.branch).append("\n")
+//        sb.append("versionName:").append(ProjectConfig.versionName).append("\n")
+//        sb.append("versionCode:").append(ProjectConfig.versionCode).append("\n")
+        sb.append("构建时间:" + sdf.format(new Date()) + "\n")
+        sb.append("开始构建----------------------\n")
+    }
+
+    @Override
+    void buildStarted(Gradle gradle) {
+
+    }
+
+    @Override
+    void settingsEvaluated(Settings settings) {
+
+    }
+
+    @Override
+    void projectsLoaded(Gradle gradle) {
+
+    }
+
+    @Override
+    void projectsEvaluated(Gradle gradle) {
+
+    }
+
+    /**
+     * 构建完成回调
+     * @param result The result of the build. Never null.
+     */
+    @Override
+    void buildFinished(BuildResult result) {
+        if(taskCounts<5) return
+        long buildCost = System.currentTimeMillis() - buildStartTime
+        sb.append("构建结束----------------------\n")
+        sb.append("构建总耗时:" + buildCost + "ms")
+        //输出到文件
+        String text = sb.toString()
+        writeToFile(BUILD_LOG_FILE_PATH, text)
+    }
+
+    /**
+     * 任务执行开始
+     * @param task The task about to be executed. Never null.
+     */
+    @Override
+    void beforeExecute(Task task) {
+        taskStartTime = System.currentTimeMillis();
+    }
+
+    /**
+     * 任务执行结束
+     * @param task The task which was executed. Never null.
+     * @param state The task state. If the task failed with an exception, the exception is available in this
+     */
+    @Override
+    void afterExecute(Task task, TaskState state) {
+        long cost = System.currentTimeMillis() - taskStartTime;
+        System.out.println("任务:" + task.name + "," + task.path + ",耗时:" + cost);
+        sb.append("[" + task.path + "]:" + cost + "ms\n")
+        taskCounts++
+    }
+
+    private void writeToFile(String fname, String text) {
+        File dir = new File(BUILD_LOG_FILE_DIR)
+        if (!dir.exists()) {
+            dir.mkdir()
+        }
+        File file = new File(BUILD_LOG_FILE_DIR + File.separator + fname + "_" + sdf2.format(new Date()) + ".log")
+        file.write(text, true)
+    }
+}
+
+gradle.addListener new BuildTimeListener()

+ 260 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/reference/TjmdReferenceActivity.kt

@@ -0,0 +1,260 @@
+package cn.muchinfo.rma.view.base.reference
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.os.PersistableBundle
+import android.view.*
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.BaseFragment
+import cn.muchinfo.rma.view.base.app.Constant
+import cn.muchinfo.rma.view.base.home.reference.ReferenceAdapter
+import cn.muchinfo.rma.view.base.home.reference.ReferenceViewModel
+import cn.muchinfo.rma.view.base.procurement.TopTabYrdzAdpater
+import cn.muchinfo.rma.view.eventbus.QuoteMessageEvent
+import com.blankj.utilcode.util.LogUtils
+import com.blankj.utilcode.util.SPUtils
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+import org.jetbrains.anko.*
+import org.jetbrains.anko.support.v4.UI
+
+class TjmdReferenceActivity : BaseActivity<ReferenceViewModel>() , ReferenceAdapter.OnContentScrollListener{
+
+    val titlename by lazy {
+        intent?.getStringExtra("titlename")
+    }
+
+    private lateinit var swipeToLayout: SwipeToLoadLayout
+    private lateinit var statusLayout: StatusLayout
+    lateinit var horScrollview: CustomHorizontalScrollView
+    lateinit var recyclerView: RecyclerView
+
+    lateinit var dataRecyclerview : RecyclerView
+
+    var fistShow: Int = 0
+    var lastShow: Int = 0
+
+    val thisTag by lazy {
+        "ReferenceActivity"
+    }
+
+    //标题头部
+    val topAdapter by lazy {
+        TopTabYrdzAdpater(this)
+    }
+
+    val referenceAdapter by lazy {
+        ReferenceAdapter(this)
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        EventBus.getDefault().register(this)
+        viewModel.initData(tag = thisTag){ isCompleted, _ ->
+            if (isCompleted){
+                referenceAdapter.notifyDataSetChanged()
+            }
+        }
+        verticalLayout {
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                //头部标题
+                topBar {
+                    commonLeftButton()
+                    commonTitle {
+                        text = titlename
+                    }
+                }
+            }.lparams(matchParent, autoSize(120))
+
+            linearLayout {
+                linearLayout {
+                    background = resources.getDrawable(R.color.white)
+                    gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
+                    textView {//待点价头部左侧数据
+//                            viewModel.titleList.bindOptional(context) {
+//                                text = it?.get(0)?.columntitle?.replace("\\n", "\n") ?: "":
+//                            }
+                        text = "合约"
+                        textColorStr = "#AAAAAA"
+                        textSizeAuto = 31
+                    }.lparams(wrapContent, wrapContent){
+                        marginStart = autoSize(30)
+                    }
+                }.lparams(autoSize(250), autoSize(100))
+                referenceAdapter.setOnContentScrollListener(this@TjmdReferenceActivity)
+                inflateLayout<CustomHorizontalScrollView>(R.layout.scrollview) {
+                    horScrollview = this
+                    setOnCustomScrollChangeListener { _, scrollX, _, _, _ -> //代码重复,可以抽取/////
+                        referenceAdapter.offestX = scrollX
+                        val viewHolderCacheList: List<ReferenceAdapter.ItemViewHolder> =
+                            referenceAdapter.viewHolderCacheList
+                        if (null != viewHolderCacheList) {
+                            val size = viewHolderCacheList.size
+                            for (i in 0 until size) {
+                                viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                    scrollX,
+                                    0
+                                )
+                            }
+                        }
+                    }
+                    relativeLayout {
+                        recyclerView { // 列头
+                            val linearLayoutManager = LinearLayoutManager(context)
+                            linearLayoutManager.orientation = LinearLayoutManager.HORIZONTAL
+                            layoutManager = linearLayoutManager
+                            background = resources.getDrawable(R.color.white)
+                            adapter = topAdapter
+                        }
+//                            viewModel.titleList.bindOptional(context) {
+//                                val titleStringList = arrayListOf<String>()
+//                                it?.subList(1, it.size)?.forEach { data ->
+//                                    titleStringList.add(data.columntitle?.replace("\\n", "\n") ?: "")
+//                                }
+//                                topAdapter.setDatas(titleStringList)
+//                            }
+                        if (SPUtils.getInstance().getString(Constant.oem) != "tjmd") {
+                            topAdapter.setDatas(arrayListOf("卖价","卖量","买价","买量","最新价","涨跌","幅度","今开","昨结","最低","最高","振幅","总量","现量","持仓量","日增","金额"))
+                        } else {
+                            topAdapter.setDatas(arrayListOf("卖价","买价","最新价","涨跌","幅度","今开","昨结","最低","最高","振幅"))
+                        }
+                    }
+                }.lparams(matchParent, matchParent)
+            }.lparams(matchParent, autoSize(100))
+
+            statusLayout(contentBlock = {
+                statusLayout = this
+                setRetryAction {
+
+                }
+//                bindTaskStatus(viewModule.status)
+                swipeToLoadLayout {
+                    swipeToLayout = this
+                    setEnableRefresh(true)
+                    setEnableLoadMore(false)
+                    setOnRefreshListener {
+                        // 查盘面,订阅行情
+                        viewModel.queryQuoteDay(
+                            tag = thisTag,
+                            first = fistShow,
+                            last = lastShow,
+                            list = viewModel.transferDataList.value ?: arrayListOf()
+                        ) { isCompleted, _ ->
+                            if (isCompleted) {
+                                if (swipeToLayout.getIsRefreshing()) {
+                                    swipeToLayout.finishRefresh()
+                                }
+                                dataRecyclerview.adapter?.notifyItemRangeChanged(fistShow, lastShow)
+                            }
+                        }
+                    }
+                    setEnableScrollContentWhenLoaded(false)
+                    setEnableLoadMoreWhenContentNotFull(false)
+
+                    recyclerView { // 数据
+                        dataRecyclerview = this
+                        background = resources.getDrawable(R.color.white)
+                        adapter = referenceAdapter
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+                                super.onScrolled(recyclerView, dx, dy)
+                                val viewHolderCacheList: List<ReferenceAdapter.ItemViewHolder> =
+                                    referenceAdapter.viewHolderCacheList
+                                if (null != viewHolderCacheList) {
+                                    val size = viewHolderCacheList.size
+                                    for (i in 0 until size) {
+                                        viewHolderCacheList[i].horItemScrollview.scrollTo(
+                                            referenceAdapter.getOffestX(),
+                                            0
+                                        )
+                                    }
+                                }
+                            }
+                        })
+
+                        addOnScrollListener(object : RecyclerView.OnScrollListener() {
+                            override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
+                                super.onScrollStateChanged(recyclerView, newState)
+                                // DES: 找出当前可视Item位置
+                                val linearLayoutManager = dataRecyclerview.layoutManager as LinearLayoutManager
+                                if (newState == RecyclerView.SCROLL_STATE_IDLE) {// 这个判断是当recyclerview不滚动时
+                                    fistShow = linearLayoutManager.findFirstVisibleItemPosition()//获取第一个显示条目
+                                    lastShow = linearLayoutManager.findLastVisibleItemPosition()//获取最后一个显示条目
+                                    if (fistShow != -1 && lastShow != -1) {
+                                        viewModel.queryQuoteDay(
+                                            tag = thisTag ?: "",
+                                            first = fistShow,
+                                            last = lastShow,
+                                            list = viewModel.transferDataList.value ?: arrayListOf()
+                                        ) { isCompleted, _ ->
+                                            if (isCompleted) {
+                                                dataRecyclerview.adapter?.notifyItemRangeChanged(fistShow, lastShow)
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        })
+                    }
+
+
+                }
+            }, emptyBlock = {
+                emptyView(hint = resources.getString(R.string.now_no_data))
+            }).lparams(matchParent, matchParent)
+
+            viewModel.transferDataList.bindOptional(context) {
+                if (it?.size ?: 0 > 10){
+                    lastShow = 10
+                }else{
+                    lastShow = it?.size ?: 0
+                }
+                if (it?.isEmpty() == true || it?.size == 0) {
+                    statusLayout.showEmpty()
+                } else {
+                    if (swipeToLayout.getIsRefreshing()) {
+                        swipeToLayout.finishRefresh()
+//                        mHeadHeaderHSView.scrollTo(scrollXView,scrollYView)
+                    }
+                    statusLayout.showSuccess()
+                    referenceAdapter.setDatas(it)
+                }
+            }
+        }
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        EventBus.getDefault().unregister(this)
+    }
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onQuoteMessageEvent(quoteMessageEvent: QuoteMessageEvent) {
+        /** 行情推送过来的goodsid **/
+        quoteMessageEvent.goodsid.forEach { goodid ->
+            LogUtils.eTag("dadafafsjhdkjahkjdhak",goodid)
+            //找到相应商品信息
+            val goodsInfo = viewModel.transferDataList.value?.find { it.goodsid == goodid }
+            viewModel.transferDataList.value?.indexOf(goodsInfo)?.let {
+                if (it != -1) {//刷新相应item
+                    dataRecyclerview.adapter?.notifyItemChanged(it)
+                }
+            }
+        }
+    }
+
+
+
+
+    override fun onScroll(event: MotionEvent?) {
+        //处理单个item滚动时,顶部tab需要联动
+        if (null != horScrollview) horScrollview.onTouchEvent(event)
+    }
+}