riku
2025-10-30 e9aa93f381afcf9f9cf0c39f2b9e32375ed49528
2025.10.30
1. 新增巡查场景历史详情相关数据逻辑(待完成);
已修改4个文件
已添加8个文件
831 ■■■■ 文件已修改
.idea/misc.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/adapter/TaskListHolder.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/DPChangeInfo.kt 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/DPProblemRecurrence.kt 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/QueryOptSingle.kt 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/httpservice/DataProdSingleSceneService.kt 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/repository/DataProdSingleSceneRepository.kt 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_scene_history_2.xml 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_inspection_content.xml 237 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_scene_history.xml 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/misc.xml
@@ -80,6 +80,7 @@
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_problem_list.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_account.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_history.xml" value="0.33" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_history_2.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_list.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_subinfo.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_take_evidence.xml" value="0.3338541666666667" />
@@ -132,15 +133,19 @@
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/item_today_task.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/item_topclass_task.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/item_town_rank.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_actionbar.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_empty_load_more.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_empty_view.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_loading.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_loading_view.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_night_work_empty.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_recycler_view_refresh.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_scene_history.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_search.xml" value="0.21145833333333333" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_search_2.xml" value="0.5" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_search_bar.xml" value="0.21145833333333333" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_search_title.xml" value="0.33" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/layout_toolbar_2.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/page_patrol_icons_first.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/page_patrol_icons_second.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/recycler_item_section_head.xml" value="0.3338541666666667" />
app/build.gradle
@@ -36,6 +36,9 @@
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    buildFeatures {
        dataBinding true
    }
    productFlavors {
    }
    sourceSets {
app/src/main/java/cn/flightfeather/thirdappmodule/adapter/TaskListHolder.java
@@ -31,11 +31,16 @@
    TextView mtv_time;
    TextView mtv_staff;
    TextView mtv_check_status;
    // å®¡æ ¸çŠ¶æ€
    ImageView img_status;
    // é£Žé™©æç¤º
    Group group_risk_warn;
    TextView tv_risk_warn;
    // å·¡æŸ¥è¦ç‚¹
    Group group_inspection_key_point;
    TextView tv_inspection_key_point;
    // åº”急巡查
    Group group_emergency_inspection;
    TextView tv_emergency_inspection;
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/DPChangeInfo.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package cn.flightfeather.thirdappmodule.bean.vo
import cn.flightfeather.thirdappmodule.bean.entity.Subtask
import cn.flightfeather.thirdappmodule.bean.vo.ProblemlistVo
/**
 * åœºæ™¯æ•´æ”¹æƒ…况
 * @date 2025/10/30
 * @author feiyu02
 */
class DPChangeInfo {
    // å­ä»»åŠ¡ä¿¡æ¯
    var subTasks: List<Subtask>? = null
    // é—®é¢˜åˆ—表
    var problems: List<ProblemlistVo>? = null
    // é—®é¢˜æ•°
    var proCount = 0
    // æ•´æ”¹æ•°
    var changeCount = 0
    // æ•´æ”¹çއ
    var changePer: Double = 0.0
    // æ•´æ”¹è€—时(天)(取耗时最长的问题作为最终整改耗时)
    var changeTime: Int = 0
    // æ•´æ”¹æ•ˆçއ = æ•´æ”¹è¦æ±‚最大耗时 / æ•´æ”¹å®žé™…耗时
    var changeEfficiency: Double = 0.0
}
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/DPProblemRecurrence.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package cn.flightfeather.thirdappmodule.bean.vo
import cn.flightfeather.thirdappmodule.bean.entity.Problemtype
/**
 * é—®é¢˜é‡å¤æƒ…况
 * @date 2025/10/30
 * @author feiyu02
 */
class DPProblemRecurrence {
    // é—®é¢˜æ ‡ç­¾
    var problemTag:String? = null
    // é—®é¢˜ç±»åž‹
    var problemType: Problemtype? = null
    // å‡ºçŽ°æ¬¡æ•°
    var count = 0
    // æ•´æ”¹æ•°
    var changeCount = 0
    // æ•´æ”¹çއ
    var changePer: Double = 0.0
}
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/QueryOptSingle.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package cn.flightfeather.thirdappmodule.bean.vo
/**
 * å•个场景纵向数据统计产品查询条件
 * @date 2025/10/30
 * @author feiyu02
 */
class QueryOptSingle {
    // åœºæ™¯id
    var sceneId: String? = null
    // èµ·å§‹æ—¶é—´ï¼Œæ ¼å¼ yyyy-MM-dd HH:mm:ss
    var startTime: String? = null
    // ç»“束时间,格式 yyyy-MM-dd HH:mm:ss
    var endTime: String? = null
}
app/src/main/java/cn/flightfeather/thirdappmodule/databinding/SceneHistoryViewModel.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package cn.flightfeather.thirdappmodule.databinding
import android.arch.lifecycle.MutableLiveData
import cn.flightfeather.thirdappmodule.bean.vo.DPChangeInfo
import cn.flightfeather.thirdappmodule.bean.vo.QueryOptSingle
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
import cn.flightfeather.thirdappmodule.module.base.BaseViewModel
import cn.flightfeather.thirdappmodule.repository.DataProdSingleSceneRepository
import cn.flightfeather.thirdappmodule.util.DateUtil
import org.jetbrains.anko.toast
import java.util.*
/**
 * åœºæ™¯åŽ†å²æƒ…å†µ
 * @author riku
 * Date: 2025/10/30
 */
class SceneHistoryViewModel : BaseViewModel() {
    private val dataProdSingleSceneRepository = DataProdSingleSceneRepository.instance
    // ä¸Šä¸ªæœˆæ•´æ”¹çŽ‡æœ€å·®çš„æƒ…å†µ
    var worstChangeInfo = MutableLiveData<DPChangeInfo>()
    fun getChangeInfoList(sceneId: String) {
        val queryOpts = getQueryOptSingleList(sceneId)
        dataProdSingleSceneRepository.getChangeInfoList(queryOpts, object : ResultCallBack<List<DPChangeInfo>> {
            override fun onSuccess(result: List<DPChangeInfo>?) {
                if (!result.isNullOrEmpty()) {
                    worstChangeInfo.value = result[0]
                }
            }
            override fun onFailure() {
                application.toast("获取整改率情况失败")
            }
        })
    }
    private fun getQueryOptSingleList(sceneId: String): List<QueryOptSingle> {
        val queryOpts = mutableListOf<QueryOptSingle>()
        // èŽ·å–å‰ä¸‰ä¸ªæœˆçš„æœˆå¤´å’Œæœˆæœ«æ—¶é—´
        val now = Calendar.getInstance().apply {
            set(Calendar.DAY_OF_MONTH, 1)
            set(Calendar.HOUR_OF_DAY, 0)
            set(Calendar.MINUTE, 0)
            set(Calendar.SECOND, 0)
        }
        repeat(3) {
            val queryOptSingle = QueryOptSingle().apply { this.sceneId = sceneId }
            // å¾—到上月最后一天
            now.add(Calendar.SECOND, -1)
            queryOptSingle.endTime = DateUtil.getDateStr(now.time)
            // å¾—到上月第一天
            now.apply {
                set(Calendar.DAY_OF_MONTH, 1)
                set(Calendar.HOUR_OF_DAY, 0)
                set(Calendar.MINUTE, 0)
                set(Calendar.SECOND, 0)
            }
            queryOptSingle.startTime = DateUtil.getDateStr(now.time)
            queryOpts.add(queryOptSingle)
        }
        return queryOpts
    }
}
app/src/main/java/cn/flightfeather/thirdappmodule/httpservice/DataProdSingleSceneService.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package cn.flightfeather.thirdappmodule.httpservice
import cn.flightfeather.thirdappmodule.bean.vo.DPProblemRecurrence
import cn.flightfeather.thirdappmodule.bean.vo.DPChangeInfo
import cn.flightfeather.thirdappmodule.bean.vo.QueryOptSingle
import cn.flightfeather.thirdappmodule.model.bean.BaseResponse
import io.reactivex.Observable
import retrofit2.Response
import retrofit2.http.*
/**
 * å•场景纵向数据统计接口
 * @author riku
 * Date: 2025/10/30
 */
interface DataProdSingleSceneService {
    /**
     * èŽ·å–æ•´æ”¹æƒ…å†µ
     */
    @POST("dataProd/singleScene/changeInfo/get")
    fun getChangeInfo(
        @Body queryOptSingle: QueryOptSingle
    ): Observable<Response<BaseResponse<DPChangeInfo>>>
    /**
     * æ‰¹é‡æŸ¥è¯¢æ•´æ”¹æƒ…况
     */
    @POST("dataProd/singleScene/changeInfo/get/list")
    fun getChangeInfoList(
        @Body queryOpts: List<QueryOptSingle>
    ): Observable<Response<BaseResponse<List<DPChangeInfo>>>>
    /**
     * é—®é¢˜é‡å¤æƒ…况
     */
    @POST("dataProd/singleScene/problemRecurrence/get")
    fun getProblemRecurrence(
        @Body queryOptSingle: QueryOptSingle
    ): Observable<Response<BaseResponse<DPProblemRecurrence>>>
}
app/src/main/java/cn/flightfeather/thirdappmodule/repository/DataProdSingleSceneRepository.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package cn.flightfeather.thirdappmodule.repository
import cn.flightfeather.thirdappmodule.bean.vo.DPChangeInfo
import cn.flightfeather.thirdappmodule.bean.vo.DPProblemRecurrence
import cn.flightfeather.thirdappmodule.bean.vo.QueryOptSingle
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
import cn.flightfeather.thirdappmodule.common.net.ResultObserver
import cn.flightfeather.thirdappmodule.common.net.RetrofitFactory
import cn.flightfeather.thirdappmodule.httpservice.DataProdSingleSceneService
import cn.flightfeather.thirdappmodule.model.bean.BaseResponse
/**
 * @author riku
 * Date: 2025/10/30
 */
class DataProdSingleSceneRepository {
    companion object {
        @JvmStatic
        val instance:DataProdSingleSceneRepository by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { DataProdSingleSceneRepository()}
    }
    val retrofit = RetrofitFactory.instance.retrofit
    /**
     * èŽ·å–æ•´æ”¹æƒ…å†µ
     */
    fun getChangeInfo(queryOptSingle: QueryOptSingle, resultCallBack: ResultCallBack<DPChangeInfo>) {
        val service = retrofit.create(DataProdSingleSceneService::class.java).getChangeInfo(queryOptSingle)
        RetrofitFactory.executeResult(service, object : ResultObserver<BaseResponse<DPChangeInfo>>() {
            override fun onSuccess(result: BaseResponse<DPChangeInfo>?) {
                resultCallBack.onSuccess(result?.data)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
    /**
     * æ‰¹é‡æŸ¥è¯¢æ•´æ”¹æƒ…况
     */
    fun getChangeInfoList(queryOpts: List<QueryOptSingle>, resultCallBack: ResultCallBack<List<DPChangeInfo>>) {
        val service = retrofit.create(DataProdSingleSceneService::class.java).getChangeInfoList(queryOpts)
        RetrofitFactory.executeResult(service, object : ResultObserver<BaseResponse<List<DPChangeInfo>>>() {
            override fun onSuccess(result: BaseResponse<List<DPChangeInfo>>?) {
                resultCallBack.onSuccess(result?.data)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
    /**
     * é—®é¢˜é‡å¤æƒ…况
     */
    fun getProblemRecurrence(queryOptSingle: QueryOptSingle, resultCallBack: ResultCallBack<DPProblemRecurrence>) {
        val service = retrofit.create(DataProdSingleSceneService::class.java).getProblemRecurrence(queryOptSingle)
        RetrofitFactory.executeResult(service, object : ResultObserver<BaseResponse<DPProblemRecurrence>>() {
            override fun onSuccess(result: BaseResponse<DPProblemRecurrence>?) {
                resultCallBack.onSuccess(result?.data)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
}
app/src/main/res/layout/dialog_scene_history_2.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.CardView
        android:id="@+id/cv_dialog_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="12dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="12dp"
        android:layout_marginBottom="40dp"
        app:cardCornerRadius="6dp"
        app:cardElevation="7dp">
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="30dp">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/dimen16">
                <ImageView
                    android:id="@+id/img_risk_warn"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:src="@drawable/icon_task_alert"
                    android:layout_marginBottom="@dimen/dimen4"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="@id/tv_risk_warn"
                    app:layout_constraintBottom_toBottomOf="@id/tv_risk_warn"
                    android:contentDescription="风险提示" />
                <TextView
                    android:id="@+id/tv_risk_warn"
                    android:layout_width="0dp"
                    android:layout_height="30dp"
                    android:textColor="@color/red_btn_bg_color"
                    android:textSize="@dimen/textSize_18"
                    android:textStyle="bold"
                    app:layout_constraintStart_toEndOf="@id/img_risk_warn"
                    app:layout_constraintTop_toTopOf="parent"
                    android:text="风险提示" />
                <TextView
                    android:id="@+id/tv_change_rate"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    android:paddingStart="20dp"
                    android:paddingEnd="0dp"
                    tools:text="整改率情况,如果整改率较低,则作为风险提示展示"
                    app:layout_constraintTop_toBottomOf="@id/tv_risk_warn"/>
                <TextView
                    android:id="@+id/tv_change_efficiency"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    android:paddingStart="20dp"
                    android:paddingEnd="0dp"
                    tools:text="整改效率情况,整改效率为要求整改的期限(天数)除以实际整改的用时(天数),如果效率低于60%,则作为风险提示展示"
                    app:layout_constraintTop_toBottomOf="@id/tv_change_rate"/>
                <TextView
                    android:id="@+id/tv_problem_recurrence"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    android:paddingStart="20dp"
                    android:paddingEnd="0dp"
                    tools:text="问题复发情况,若前三个月内有相同类型的问题出现两次及以上时,提醒展示,并给出对应的整改率"
                    app:layout_constraintTop_toBottomOf="@id/tv_change_efficiency"/>
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/dimen16">
                <ImageView
                    android:id="@+id/img_inspection_key_point"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:src="@drawable/icon_consult"
                    android:layout_marginBottom="@dimen/dimen4"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="@id/tv_risk_warn"
                    app:layout_constraintBottom_toBottomOf="@id/tv_inspection_key_point"
                    android:contentDescription="巡查要点" />
                <TextView
                    android:id="@+id/tv_inspection_key_point"
                    android:layout_width="0dp"
                    android:layout_height="30dp"
                    android:textColor="@color/primary_text"
                    android:textSize="@dimen/textSize_18"
                    app:layout_constraintStart_toEndOf="@id/img_inspection_key_point"
                    app:layout_constraintTop_toTopOf="parent"
                    android:text="巡查要点" />
                <TextView
                    android:id="@+id/tv_change_rate"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    android:paddingStart="20dp"
                    android:paddingEnd="0dp"
                    tools:text="巡查要点,注意需要检查的位置、设备和问题等"
                    app:layout_constraintTop_toBottomOf="@id/img_inspection_key_point"/>
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/dimen16">
                <ImageView
                    android:id="@+id/img_risk_warn"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:src="@drawable/ic_emergency"
                    android:layout_marginBottom="@dimen/dimen4"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="@id/tv_risk_warn"
                    app:layout_constraintBottom_toBottomOf="@id/tv_risk_warn"
                    android:contentDescription="应急巡查" />
                <TextView
                    android:id="@+id/tv_risk_warn"
                    android:layout_width="0dp"
                    android:layout_height="30dp"
                    android:textColor="@color/primary_text"
                    android:textSize="@dimen/textSize_18"
                    app:layout_constraintStart_toEndOf="@id/img_risk_warn"
                    app:layout_constraintTop_toTopOf="parent"
                    android:text="应急巡查" />
            </android.support.constraint.ConstraintLayout>
            </LinearLayout>
        </ScrollView>
    </android.support.v7.widget.CardView>
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/cancel"
        android:src="@drawable/icon_close_white"
        app:elevation="8dp"
        app:fabSize="normal"
        app:layout_anchor="@id/cv_dialog_main"
        app:layout_anchorGravity="bottom|center" />
</android.support.design.widget.CoordinatorLayout>
app/src/main/res/layout/fragment_inspection_content.xml
@@ -14,123 +14,6 @@
        android:layout_alignParentTop="true"
        android:layout_marginBottom="20dp" />
    <TextView
        android:id="@+id/scene_status"
        android:visibility="gone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="230dp"
        android:background="@drawable/shape_yellow"
        android:drawableStart="@drawable/ic_group_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="@string/scene_status"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <TextView
        android:id="@+id/scene_detail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="230dp"
        android:background="@drawable/shape_yellow"
        android:drawableStart="@drawable/ic_info_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="点位情况"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <TextView
        android:id="@+id/user_account"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="188dp"
        android:background="@drawable/shape_green"
        android:drawableStart="@drawable/ic_group_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="用户账号"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <LinearLayout
        android:visibility="visible"
        android:id="@+id/ll_patrol_icons"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        android:layout_alignParentBottom="true"
        android:background="@drawable/shap_stroke_top"
        android:orientation="vertical">
        <LinearLayout
            android:id="@+id/ll_patrol_hide"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:foreground="?android:attr/selectableItemBackground"
            android:gravity="center">
            <ImageView
                android:id="@+id/imageView5"
                android:layout_width="36dp"
                android:layout_height="20dp"
                android:layout_marginBottom="1dp"
                android:layout_marginTop="3dp"
                android:padding="3dp"
                android:scaleType="fitXY"
                android:src="@drawable/icon_hide" />
        </LinearLayout>
        <android.support.v4.view.ViewPager
            android:id="@+id/vp_patrol_icons"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2">
        </android.support.v4.view.ViewPager>
        <ImageView
            android:id="@+id/iv_patrol_pointer"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:adjustViewBounds="true"
            android:src="@drawable/select_first_point"
            android:layout_gravity="center_horizontal"
            />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/ll_patrol_show"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:foreground="?android:attr/selectableItemBackground"
        android:layout_alignParentBottom="true"
        android:background="@drawable/shap_stroke_top"
        android:gravity="center_horizontal">
        <ImageView
            android:src="@drawable/icon_hide"
            android:layout_width="36dp"
            android:rotation="180"
            android:layout_height="20dp"
            android:padding="3dp"
            android:scaleType="fitXY"
            android:layout_gravity="center"/>
    </LinearLayout>
    <RelativeLayout
        android:visibility="visible"
        android:elevation="1dp"
@@ -138,7 +21,6 @@
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true">
@@ -197,7 +79,7 @@
        <ImageView
            android:id="@+id/iv_patrol_back"
            android:layout_width="45dp"
           android:paddingLeft="18dp"
            android:paddingLeft="18dp"
            android:paddingTop="9dp"
            android:paddingRight="9dp"
            android:paddingBottom="9dp"
@@ -414,7 +296,7 @@
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:orientation="horizontal"
            android:visibility="gone">
            android:visibility="visible">
            <TextView
                android:layout_width="wrap_content"
@@ -439,6 +321,121 @@
        </LinearLayout>
    </LinearLayout>
    <TextView
        android:id="@+id/scene_status"
        android:visibility="gone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="230dp"
        android:background="@drawable/shape_yellow"
        android:drawableStart="@drawable/ic_group_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="@string/scene_status"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <TextView
        android:id="@+id/scene_detail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="230dp"
        android:background="@drawable/shape_yellow"
        android:drawableStart="@drawable/ic_info_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="点位情况"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <TextView
        android:id="@+id/user_account"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="188dp"
        android:background="@drawable/shape_green"
        android:drawableStart="@drawable/ic_group_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="用户账号"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <LinearLayout
        android:visibility="visible"
        android:id="@+id/ll_patrol_icons"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        android:layout_alignParentBottom="true"
        android:background="@drawable/shap_stroke_top"
        android:orientation="vertical">
        <LinearLayout
            android:id="@+id/ll_patrol_hide"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:foreground="?android:attr/selectableItemBackground"
            android:gravity="center">
            <ImageView
                android:id="@+id/imageView5"
                android:layout_width="36dp"
                android:layout_height="20dp"
                android:layout_marginBottom="1dp"
                android:layout_marginTop="3dp"
                android:padding="3dp"
                android:scaleType="fitXY"
                android:src="@drawable/icon_hide" />
        </LinearLayout>
        <android.support.v4.view.ViewPager
            android:id="@+id/vp_patrol_icons"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2">
        </android.support.v4.view.ViewPager>
        <ImageView
            android:id="@+id/iv_patrol_pointer"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:adjustViewBounds="true"
            android:src="@drawable/select_first_point"
            android:layout_gravity="center_horizontal"
            />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/ll_patrol_show"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:foreground="?android:attr/selectableItemBackground"
        android:layout_alignParentBottom="true"
        android:background="@drawable/shap_stroke_top"
        android:gravity="center_horizontal">
        <ImageView
            android:src="@drawable/icon_hide"
            android:layout_width="36dp"
            android:rotation="180"
            android:layout_height="20dp"
            android:padding="3dp"
            android:scaleType="fitXY"
            android:layout_gravity="center"/>
    </LinearLayout>
</RelativeLayout>
app/src/main/res/layout/layout_scene_history.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="30dp">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/dimen16">
                <ImageView
                    android:id="@+id/img_risk_warn"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_marginBottom="@dimen/dimen4"
                    android:contentDescription="风险提示"
                    android:src="@drawable/icon_task_alert"
                    app:layout_constraintBottom_toBottomOf="@id/tv_risk_warn"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="@id/tv_risk_warn" />
                <TextView
                    android:id="@+id/tv_risk_warn"
                    android:layout_width="0dp"
                    android:layout_height="30dp"
                    android:text="风险提示"
                    android:textColor="@color/red_btn_bg_color"
                    android:textSize="@dimen/textSize_18"
                    android:textStyle="bold"
                    app:layout_constraintStart_toEndOf="@id/img_risk_warn"
                    app:layout_constraintTop_toTopOf="parent" />
                <TextView
                    android:id="@+id/tv_change_rate"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingStart="20dp"
                    android:paddingEnd="0dp"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintTop_toBottomOf="@id/tv_risk_warn"
                    tools:text="整改率情况,如果整改率较低,则作为风险提示展示" />
                <TextView
                    android:id="@+id/tv_change_efficiency"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingStart="20dp"
                    android:paddingEnd="0dp"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintTop_toBottomOf="@id/tv_change_rate"
                    tools:text="整改效率情况,整改效率为要求整改的期限(天数)除以实际整改的用时(天数),如果效率低于60%,则作为风险提示展示" />
                <TextView
                    android:id="@+id/tv_problem_recurrence"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingStart="20dp"
                    android:paddingEnd="0dp"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintTop_toBottomOf="@id/tv_change_efficiency"
                    tools:text="问题复发情况,若前三个月内有相同类型的问题出现两次及以上时,提醒展示,并给出对应的整改率" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/dimen16">
                <ImageView
                    android:id="@+id/img_inspection_key_point"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_marginBottom="@dimen/dimen4"
                    android:contentDescription="巡查要点"
                    android:src="@drawable/icon_consult"
                    app:layout_constraintBottom_toBottomOf="@id/tv_inspection_key_point"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="@id/tv_risk_warn" />
                <TextView
                    android:id="@+id/tv_inspection_key_point"
                    android:layout_width="0dp"
                    android:layout_height="30dp"
                    android:text="巡查要点"
                    android:textColor="@color/primary_text"
                    android:textSize="@dimen/textSize_18"
                    app:layout_constraintStart_toEndOf="@id/img_inspection_key_point"
                    app:layout_constraintTop_toTopOf="parent" />
                <TextView
                    android:id="@+id/tv_change_rate"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingStart="20dp"
                    android:paddingEnd="0dp"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintTop_toBottomOf="@id/tv_inspection_key_point"
                    tools:text="巡查要点,注意需要检查的位置、设备和问题等" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/dimen16">
                <ImageView
                    android:id="@+id/img_risk_warn"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_marginBottom="@dimen/dimen4"
                    android:contentDescription="应急巡查"
                    android:src="@drawable/ic_emergency"
                    app:layout_constraintBottom_toBottomOf="@id/tv_risk_warn"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="@id/tv_risk_warn" />
                <TextView
                    android:id="@+id/tv_risk_warn"
                    android:layout_width="0dp"
                    android:layout_height="30dp"
                    android:text="应急巡查"
                    android:textColor="@color/primary_text"
                    android:textSize="@dimen/textSize_18"
                    app:layout_constraintStart_toEndOf="@id/img_risk_warn"
                    app:layout_constraintTop_toTopOf="parent" />
            </android.support.constraint.ConstraintLayout>
        </LinearLayout>
    </ScrollView>
</android.support.design.widget.CoordinatorLayout>