1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
package cn.flightfeather.thirdappmodule.dataanalysis
 
import android.graphics.Color
import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v7.widget.DividerItemDecoration
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.Spinner
import android.widget.TextView
import android.widget.Toast
import cn.flightfeather.thirdappmodule.CommonApplication
import cn.flightfeather.thirdappmodule.R
import cn.flightfeather.thirdappmodule.adapter.AllListViewAdapter
import cn.flightfeather.thirdappmodule.adapter.AllRecyclerViewAdapter
import cn.flightfeather.thirdappmodule.bean.entity.Domainitem
import cn.flightfeather.thirdappmodule.bean.entity.Evaluation
import cn.flightfeather.thirdappmodule.bean.vo.TaskVo
import cn.flightfeather.thirdappmodule.httpservice.EvaluationService
import cn.flightfeather.thirdappmodule.httpservice.TaskService
import cn.flightfeather.thirdappmodule.util.CommonUtils
import cn.flightfeather.thirdappmodule.util.Constant
import cn.flightfeather.thirdappmodule.util.Domain
import com.ping.greendao.gen.DomainitemDao
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.util.*
 
/**
 * A simple [Fragment] subclass.
 */
class AnysisRankFragment : Fragment(), View.OnClickListener, AdapterView.OnItemSelectedListener {
    private var application: CommonApplication? = null
    private var taskService: TaskService? = null
    private var evaluationService: EvaluationService? = null
    private val taskVoList: MutableList<TaskVo> = ArrayList() //所有顶层任务
    private var sceneList: MutableList<Domainitem> = ArrayList() //场景
    private val sceneEvaluationList: MutableList<Evaluation> = ArrayList() //场景评分排名
    private val townEvaluationList: MutableList<Evaluation> = ArrayList() //街道评分排名
 
    //Spinner
    private var sp_top_task: Spinner? = null
    private var sp_scene: Spinner? = null
    private var topTaskAdapter: AllListViewAdapter<TaskVo>? = null
    private var sceneAdapter: AllListViewAdapter<Domainitem>? = null
 
    //TextView
    private var tv_no: TextView? = null
    private var tv_scene_rank: TextView? = null
    private var tv_town_rank: TextView? = null
 
    //RecyclerView
    private var rv_rank: RecyclerView? = null
    private val rankAdapterMap = HashMap<Int, AllRecyclerViewAdapter<Evaluation>>()
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_anysis_rank, container, false)
    }
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        application = activity!!.application as CommonApplication
        taskService = application!!.retrofit.create(TaskService::class.java)
        evaluationService = application!!.retrofit.create(EvaluationService::class.java)
        initUI(view)
        initSpinnerData()
        initSpinner(view)
        initRecyclerView(view)
    }
 
    override fun onHiddenChanged(hidden: Boolean) {
        super.onHiddenChanged(hidden)
    }
 
    override fun onDestroy() {
        super.onDestroy()
    }
 
    private fun initUI(view: View) {
        tv_no = view.findViewById<View>(R.id.tv_no) as TextView
        tv_scene_rank = view.findViewById<View>(R.id.tv_scene_rank) as TextView
        tv_town_rank = view.findViewById<View>(R.id.tv_town_rank) as TextView
        tv_scene_rank!!.setOnClickListener(this)
        tv_town_rank!!.setOnClickListener(this)
        tv_scene_rank!!.isSelected = true
    }
 
    /**
     * 下拉框数据
     */
    private fun initSpinnerData() {
        //顶层任务
        val getTopClassTaskList = taskService!!.getTaskProgress("0")
        getTopClassTaskList.enqueue(object : Callback<List<TaskVo>?> {
            override fun onResponse(call: Call<List<TaskVo>?>, response: Response<List<TaskVo>?>) {
                val list = response.body()
                if (list is List<TaskVo>) {
                    taskVoList.addAll(list)
                    topTaskAdapter!!.notifyDataSetChanged()
                    //                    sp_top_task.setSelection(0);
                }
            }
 
            override fun onFailure(call: Call<List<TaskVo>?>, t: Throwable) {}
        })
        //场景
        val domainitemDao = application!!.daoSession.domainitemDao
        val queryBuilder = domainitemDao.queryBuilder()
            .where(DomainitemDao.Properties.Dcguid.eq(Domain.DOMAINGUID_SCENSETYPE))
            .orderAsc(DomainitemDao.Properties.Value)
        sceneList = ArrayList()
        sceneList.addAll(queryBuilder.list())
    }
 
    /**
     * 下拉框数据绑定
     * @param view
     */
    private fun initSpinner(view: View) {
        sp_top_task = view.findViewById<View>(R.id.sp_top_task) as Spinner
        sp_scene = view.findViewById<View>(R.id.sp_scene) as Spinner
        initAdapter()
        sp_top_task!!.onItemSelectedListener = this
        sp_scene!!.onItemSelectedListener = this
        //        sp_top_task.setSelection(0);
//        sp_scene.setSelection(0);
    }
 
    /**
     * 下拉框数据适配器
     */
    private fun initAdapter() {
        topTaskAdapter = object : AllListViewAdapter<TaskVo>(taskVoList as ArrayList<TaskVo>, R.layout.item_spinner_simple_text) {
            override fun bindView(holder: ViewHolder, obj: TaskVo) {
                holder.setText(R.id.tv_item, obj.name)
            }
        }
        sp_top_task!!.adapter = topTaskAdapter
        topTaskAdapter?.notifyDataSetChanged()
        sceneAdapter = object : AllListViewAdapter<Domainitem>(sceneList as ArrayList<Domainitem>, R.layout.item_spinner_simple_text) {
            override fun bindView(holder: ViewHolder, obj: Domainitem) {
                holder.setText(R.id.tv_item, obj.text)
            }
        }
        sp_scene!!.adapter = sceneAdapter
        sceneAdapter?.notifyDataSetChanged()
    }
 
    /**
     * 排名列表
     * @param view
     */
    private fun initRecyclerView(view: View) {
        rv_rank = view.findViewById<View>(R.id.rv_rank) as RecyclerView
        val scenetypeid = (sp_scene!!.selectedItem as Domainitem).value
        val adapter: AllRecyclerViewAdapter<Evaluation> = object : AllRecyclerViewAdapter<Evaluation>(sceneEvaluationList, R.layout.item_scene_rank, context) {
            override fun bindView(holder: MyViewHolder, obj: Evaluation, bool: Boolean, position: Int) {
                holder.setText(R.id.tv_no, (position + 1).toString())
                    .setImageResource(R.id.iv_scene_type, CommonUtils.getIconBySceneType(scenetypeid))
                    .setText(R.id.tv_scene_name, obj.scensename)
                    .setText(R.id.tv_district, obj.townname)
                    .setText(R.id.tv_standard, obj.resultstandardbef)
                when (obj.resultstandardbef) {
                    Constant.STANDARD_1 -> holder.setText(R.id.tv_suggestion, Constant.SUGGESTION_1)
                        .setTextColor(R.id.tv_suggestion, Color.GREEN)
                    Constant.STANDARD_2 -> holder.setText(R.id.tv_suggestion, Constant.SUGGESTION_2)
                        .setTextColor(R.id.tv_suggestion, Color.YELLOW)
                    Constant.STANDARD_3 -> holder.setText(R.id.tv_suggestion, Constant.SUGGESTION_3)
                        .setTextColor(R.id.tv_suggestion, Color.RED)
                }
            }
        }
        rankAdapterMap[R.id.tv_scene_rank] = adapter
        val layoutManager = LinearLayoutManager(context)
        layoutManager.orientation = LinearLayoutManager.VERTICAL
        rv_rank!!.layoutManager = layoutManager
        rv_rank!!.addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL))
        rv_rank!!.adapter = rankAdapterMap[R.id.tv_scene_rank]
    }
 
    /**
     * 联网查询
     */
    private fun search() {
        try {
            val tguid = (sp_top_task!!.selectedItem as TaskVo).tguid
            val scenetypeid = (sp_scene!!.selectedItem as Domainitem).value
            val getRank0fScene = evaluationService!!.getRank0fScene(tguid, scenetypeid, null)
            getRank0fScene.enqueue(object : Callback<List<Evaluation>?> {
                override fun onResponse(call: Call<List<Evaluation>?>, response: Response<List<Evaluation>?>) {
                    val list = response.body()
                    if (list is List<Evaluation>) {
                        sceneEvaluationList.addAll(list)
                        rankAdapterMap[R.id.tv_scene_rank]!!.notifyDataSetChanged()
                    } else if (response.body() == null) {
                        Toast.makeText(context, "无数据", Toast.LENGTH_SHORT).show()
                    }
                }
 
                override fun onFailure(call: Call<List<Evaluation>?>, t: Throwable) {}
            })
            val getRankofTown = evaluationService!!.getRankofTown(tguid, scenetypeid)
            getRankofTown.enqueue(object : Callback<List<Evaluation>?> {
                override fun onResponse(call: Call<List<Evaluation>?>, response: Response<List<Evaluation>?>) {
                    val list = response.body()
                    if (list is List<Evaluation>) {
                        townEvaluationList.addAll(list)
                    } else if (response.body() == null) {
                        Toast.makeText(context, "无数据", Toast.LENGTH_SHORT).show()
                    }
                }
 
                override fun onFailure(call: Call<List<Evaluation>?>, t: Throwable) {}
            })
        } catch (e: NullPointerException) {
            e.printStackTrace()
        }
    }
 
    override fun onClick(v: View) {
        when (v.id) {
            R.id.tv_town_rank -> {
                tv_town_rank!!.isSelected = true
                tv_scene_rank!!.isSelected = false
                tv_town_rank!!.setTextColor(Color.WHITE)
                tv_scene_rank!!.setTextColor(Color.BLACK)
                rv_rank!!.adapter = rankAdapterMap[R.id.tv_town_rank]
            }
            R.id.tv_scene_rank -> {
                tv_scene_rank!!.isSelected = true
                tv_town_rank!!.isSelected = false
                tv_scene_rank!!.setTextColor(Color.WHITE)
                tv_town_rank!!.setTextColor(Color.BLACK)
                rv_rank!!.adapter = rankAdapterMap[R.id.tv_scene_rank]
            }
        }
    }
 
    override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
        when (parent.id) {
            R.id.sp_top_task -> search()
            R.id.sp_scene -> search()
        }
    }
 
    override fun onNothingSelected(parent: AdapterView<*>?) {}
}