From de287a699e76338361713a4a690b8e63fb1e5385 Mon Sep 17 00:00:00 2001 From: wenfei Date: Thu, 18 Sep 2025 17:07:08 +0800 Subject: [PATCH] =?UTF-8?q?2.4.3=20release=201.=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=9D=A5=E8=AE=BF=E7=AE=A1=E7=90=86=E3=80=81?= =?UTF-8?q?=E5=8A=9E=E5=85=AC=E9=A2=86=E7=94=A8=E3=80=81=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E3=80=81=E6=97=A5=E7=A8=8B=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E3=80=822.=E7=A7=BB=E9=99=A4=E9=80=9A=E8=AE=AF=E5=BD=95?= =?UTF-8?q?=E3=80=823.=E6=88=91=E7=9A=84-=E7=A7=BB=E9=99=A4=E6=88=91?= =?UTF-8?q?=E7=9A=84=E5=BE=85=E5=8A=9E(=E5=85=B6=E5=AE=83=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F)=E3=80=81APP=E5=BB=BA=E8=AE=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 6 +- app/src/main/java/com/rehome/zhdcoa/App.java | 17 +- .../zhdcoa/ui/activity/LoginActivity.kt | 39 +- .../rehome/zhdcoa/ui/activity/MainActivity.kt | 97 +++-- .../zhdcoa/ui/activity/WeatherActivity.kt | 373 ++++++++++++++++ .../rehome/zhdcoa/ui/fragment/HomeFragment.kt | 64 ++- .../zhdcoa/ui/fragment/MineFragment.java | 70 +-- .../main/res/drawable-xhdpi/real_weather.png | Bin 0 -> 21277 bytes app/src/main/res/layout/activity_login.xml | 1 - app/src/main/res/layout/activity_main.xml | 44 +- app/src/main/res/layout/activity_weather.xml | 404 ++++++++++++++++++ app/src/main/res/layout/fragment_mine.xml | 11 +- 13 files changed, 971 insertions(+), 159 deletions(-) create mode 100644 app/src/main/java/com/rehome/zhdcoa/ui/activity/WeatherActivity.kt create mode 100644 app/src/main/res/drawable-xhdpi/real_weather.png create mode 100644 app/src/main/res/layout/activity_weather.xml diff --git a/app/build.gradle b/app/build.gradle index d83b116..f2e4c48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "com.rehome.zhdcoa" minSdk 24 targetSdk 36 - versionCode 26 - versionName "2.4.2" + versionCode 27 + versionName "2.4.3" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" //每个应用拥有不同的authorities,防止相同的在同一个手机上无法同时安装 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 59f96ac..49a8458 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -81,6 +81,7 @@ tools:ignore="GoogleAppIndexingWarning" tools:replace="android:allowBackup" tools:targetApi="s"> + @@ -1205,7 +1206,10 @@ android:name=".ui.activity.StatisticsTableActivity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize|stateHidden" /> - + diff --git a/app/src/main/java/com/rehome/zhdcoa/App.java b/app/src/main/java/com/rehome/zhdcoa/App.java index f974fcb..e49d9bf 100644 --- a/app/src/main/java/com/rehome/zhdcoa/App.java +++ b/app/src/main/java/com/rehome/zhdcoa/App.java @@ -165,15 +165,14 @@ public class App extends LitePalApplication { * 初始化深信服注销监听回调 * 初始化深信服dp,sp转px的工具类 */ -// if (isApkInDebug(base)) { -// showLog("attachBaseContext base"); -// initSdk(base); -// GlobalListenerManager.getInstance().init(base); -// DpPxSpTransformUtil.init(getResources().getDisplayMetrics().density); -// } - initSdk(base); - GlobalListenerManager.getInstance().init(base); - DpPxSpTransformUtil.init(getResources().getDisplayMetrics().density); + if (isApkInDebug(base)) { + initSdk(base); + GlobalListenerManager.getInstance().init(base); + DpPxSpTransformUtil.init(getResources().getDisplayMetrics().density); + } +// initSdk(base); +// GlobalListenerManager.getInstance().init(base); +// DpPxSpTransformUtil.init(getResources().getDisplayMetrics().density); } public void clearUser() { diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt index 0045114..0fd11dc 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt @@ -119,21 +119,21 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { Contans.BASE_URL_AI_3D_SERVER_INTRANET //AI三维可视化安防平台登录 电厂外网 } } else { -// binding.rg.check(R.id.rb2) -// SPUtils.put(this, Contans.NETWORK_CHECK_TYPE, "外网") -// Contans.IP = Contans.IP_EXTRANET //运行IP外网 -// Contans.BASE_URL = Contans.BASE_URL_EXTRANET //行政IP外网 -// Contans.BASE_URL_COMPANY_SERVER = -// Contans.BASE_URL_COMPANY_SERVER_EXTRANET //智慧安防平台登录 电厂外网 -// Contans.BASE_URL_AI_3D_SERVER = -// Contans.BASE_URL_AI_3D_SERVER_EXTRANET //AI三维可视化安防平台登录 电厂外网 - binding.rg.check(R.id.rb3) - Contans.IP = Contans.IP_INTRANET //运行IP内网 - Contans.BASE_URL = Contans.BASE_URL_INTRANET //行政IP内网 + binding.rg.check(R.id.rb2) + SPUtils.put(this, Contans.NETWORK_CHECK_TYPE, "外网") + Contans.IP = Contans.IP_EXTRANET //运行IP外网 + Contans.BASE_URL = Contans.BASE_URL_EXTRANET //行政IP外网 Contans.BASE_URL_COMPANY_SERVER = - Contans.BASE_URL_COMPANY_SERVER_INTRANET //智慧安防平台登录 电厂内网 + Contans.BASE_URL_COMPANY_SERVER_EXTRANET //智慧安防平台登录 电厂外网 Contans.BASE_URL_AI_3D_SERVER = - Contans.BASE_URL_AI_3D_SERVER_INTRANET //AI三维可视化安防平台登录 电厂外网 + Contans.BASE_URL_AI_3D_SERVER_EXTRANET //AI三维可视化安防平台登录 电厂外网 +// binding.rg.check(R.id.rb3) +// Contans.IP = Contans.IP_INTRANET //运行IP内网 +// Contans.BASE_URL = Contans.BASE_URL_INTRANET //行政IP内网 +// Contans.BASE_URL_COMPANY_SERVER = +// Contans.BASE_URL_COMPANY_SERVER_INTRANET //智慧安防平台登录 电厂内网 +// Contans.BASE_URL_AI_3D_SERVER = +// Contans.BASE_URL_AI_3D_SERVER_INTRANET //AI三维可视化安防平台登录 电厂外网 } binding.rg.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { _, checkedId -> @@ -198,6 +198,15 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { SFUemSDK.getInstance().logout() showToast(R.string.str_vpn_logout) } + if (isApkInDebug(this)) { + binding.tvVpnLogin.visibility=View.INVISIBLE + binding.tvVpnLogout.visibility=View.VISIBLE + binding.rb3.visibility=View.VISIBLE + }else{ + binding.tvVpnLogin.visibility=View.GONE + binding.tvVpnLogout.visibility=View.GONE + binding.rb3.visibility=View.GONE + } } @SuppressLint("SetTextI18n") @@ -219,8 +228,8 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { if (isApkInDebug(context)) { // 管理员 - binding.etUsername.setText("ZHPS_Admin") - binding.etPassword.setText("Rehome.zhps@996") +// binding.etUsername.setText("ZHPS_Admin") +// binding.etPassword.setText("Rehome.zhps@996") //公司内网215管理员 diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/MainActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/MainActivity.kt index 13837f1..780108c 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/MainActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/MainActivity.kt @@ -66,7 +66,7 @@ class MainActivity : BaseActivityOaToolbarViewBinding() { private var mqttPublishServer: MqttSSLPublishServer? = null private var isInitTbs: Boolean = false - private lateinit var contactFragment:ContactFragment + //private lateinit var contactFragment:ContactFragment //定时器 private var timer: Timer? = null //定时器 @@ -106,11 +106,11 @@ class MainActivity : BaseActivityOaToolbarViewBinding() { badgeView_me.setBadgeMargin(0, 2, 10, 0) //设置边距 badgeView_me.textSize = 16f - contactFragment = ContactFragment() + //contactFragment = ContactFragment() fragments.add(HomeFragment()) fragments.add(YunXingFragment()) - fragments.add(contactFragment) + //fragments.add(contactFragment) fragments.add(MineFragment.getInstance()) adapter = object : FragmentPagerAdapter(supportFragmentManager) { @@ -154,29 +154,36 @@ class MainActivity : BaseActivityOaToolbarViewBinding() { } 2 -> { - setToolbarTitle("通讯录") - binding.vp.setCurrentItem(2, false) - binding.rbContact.setTextColor(Color.parseColor("#0099ff")) - binding.rbContact.isChecked = true - binding.toolbarView.topLl.visibility = View.VISIBLE - if(contactFragment.datas.size==0){ - if (contactFragment.isAdded && contactFragment.isVisible) { - // Fragment存在且可见,可以安全访问 - contactFragment.getData() - } else { - // Fragment不可用或不可见 - } - } - } - - 3 -> { MineFragment.getInstance().getAboutMeData() setToolbarTitle("") - binding.vp.setCurrentItem(3, false) + binding.vp.setCurrentItem(2, false) binding.toolbarView.topLl.visibility = View.GONE binding.rbMine.setTextColor(Color.parseColor("#0099ff")) binding.rbMine.isChecked = true + +// setToolbarTitle("通讯录") +// binding.vp.setCurrentItem(2, false) +// binding.rbContact.setTextColor(Color.parseColor("#0099ff")) +// binding.rbContact.isChecked = true +// binding.toolbarView.topLl.visibility = View.VISIBLE +// if(contactFragment.datas.size==0){ +// if (contactFragment.isAdded && contactFragment.isVisible) { +// // Fragment存在且可见,可以安全访问 +// contactFragment.getData() +// } else { +// // Fragment不可用或不可见 +// } +// } } + +// 3 -> { +// MineFragment.getInstance().getAboutMeData() +// setToolbarTitle("") +// binding.vp.setCurrentItem(3, false) +// binding.toolbarView.topLl.visibility = View.GONE +// binding.rbMine.setTextColor(Color.parseColor("#0099ff")) +// binding.rbMine.isChecked = true +// } } } @@ -197,14 +204,16 @@ class MainActivity : BaseActivityOaToolbarViewBinding() { binding.vp.setCurrentItem(1, false) binding.rbYunxing.setTextColor(Color.parseColor("#0099ff")) binding.toolbarView.topLl.visibility = View.GONE - } else if (i == R.id.rb_contact) { - setToolbarTitle("通讯录") - binding.vp.setCurrentItem(2, false) - binding.rbContact.setTextColor(Color.parseColor("#0099ff")) - binding.toolbarView.topLl.visibility = View.VISIBLE - } else if (i == R.id.rb_mine) { + } +// else if (i == R.id.rb_contact) { +// setToolbarTitle("通讯录") +// binding.vp.setCurrentItem(2, false) +// binding.rbContact.setTextColor(Color.parseColor("#0099ff")) +// binding.toolbarView.topLl.visibility = View.VISIBLE +// } + else if (i == R.id.rb_mine) { setToolbarTitle("") - binding.vp.setCurrentItem(3, false) + binding.vp.setCurrentItem(2, false) binding.rbMine.setTextColor(Color.parseColor("#0099ff")) binding.toolbarView.topLl.visibility = View.GONE } @@ -279,7 +288,7 @@ class MainActivity : BaseActivityOaToolbarViewBinding() { private fun initTextColor() { binding.rbHome.setTextColor(Color.parseColor("#abadbb")) binding.rbYunxing.setTextColor(Color.parseColor("#abadbb")) - binding.rbContact.setTextColor(Color.parseColor("#abadbb")) + //binding.rbContact.setTextColor(Color.parseColor("#abadbb")) binding.rbMine.setTextColor(Color.parseColor("#abadbb")) } @@ -305,18 +314,20 @@ class MainActivity : BaseActivityOaToolbarViewBinding() { e.printStackTrace() } } - if (timerVpn == null) { - try { - timerVpn = Timer() - timerVpn!!.schedule(object : TimerTask() { - override fun run() { - // 注销VPN登录. - SFUemSDK.getInstance().logout() - } - }, 28800000, 28800000) - // 设定指定的时间time,此处为10000毫秒 - } catch (e: Exception) { - e.printStackTrace() + if (isApkInDebug(context)) { + if (timerVpn == null) { + try { + timerVpn = Timer() + timerVpn!!.schedule(object : TimerTask() { + override fun run() { + // 注销VPN登录. + SFUemSDK.getInstance().logout() + } + }, 28800000, 28800000) + // 设定指定的时间time,此处为10000毫秒 + } catch (e: Exception) { + e.printStackTrace() + } } } } @@ -332,8 +343,10 @@ class MainActivity : BaseActivityOaToolbarViewBinding() { if (timer != null) { timer!!.cancel() } - if (timerVpn != null) { - timerVpn!!.cancel() + if (isApkInDebug(context)) { + if (timerVpn != null) { + timerVpn!!.cancel() + } } } diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/WeatherActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/WeatherActivity.kt new file mode 100644 index 0000000..a5bd657 --- /dev/null +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/WeatherActivity.kt @@ -0,0 +1,373 @@ +package com.rehome.zhdcoa.ui.activity + + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.TextView +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import com.rehome.zhdcoa.Contans +import com.rehome.zhdcoa.R +import com.rehome.zhdcoa.adapter.WorkRiskLevelListAdapter +import com.rehome.zhdcoa.base.BaseActivityOaToolbarTwoViewBinding +import com.rehome.zhdcoa.base.BaseActivityOaToolbarViewBinding +import com.rehome.zhdcoa.bean.WorkRiskLevelListBean +import com.rehome.zhdcoa.completionUtil.ReplaceSpan +import com.rehome.zhdcoa.completionUtil.ReplaceSpan.OnClickListener +import com.rehome.zhdcoa.databinding.ActivityWorkRiskListBinding +import com.rehome.zhdcoa.utils.AuthenticationLoginAIUtils +import com.rehome.zhdcoa.utils.GsonUtils +import com.rehome.zhdcoa.utils.HttpListener +import com.rehome.zhdcoa.utils.NohttpUtils +import com.rehome.zhdcoa.utils.RSAAndroid +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.Response +import java.text.SimpleDateFormat +import java.util.Calendar +import javax.net.ssl.HostnameVerifier + +/** + * Create By HuangWenFei + * 创建日期:2025-09-18 15:19 + * 描述:气象数据 实时概况 + */ +class WeatherActivity : BaseActivityOaToolbarViewBinding() { + + private lateinit var headView: View + + private var datas: MutableList = mutableListOf() + private lateinit var mAdapter: WorkRiskLevelListAdapter + + private var selectList: MutableList = mutableListOf() + private var jobNoList: MutableList = mutableListOf() + + private var selectListAssistant: MutableList = mutableListOf() + private var jobNoListAssistant: MutableList = mutableListOf() + + private var selectListCustom: MutableList = mutableListOf() + private var jobNoListCustom: MutableList = mutableListOf() + + private var dataA: MutableList = mutableListOf() + private var dataB: MutableList = mutableListOf() + private var dataC1: MutableList = mutableListOf() + private var dataC2: MutableList = mutableListOf() + private var dataC3: MutableList = mutableListOf() + private var dataLowRisk: MutableList = mutableListOf() + private var isNetworkNormal = false + + private lateinit var launcherResultQRCode: ActivityResultLauncher + + override fun getViewBinding() = ActivityWorkRiskListBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + + initToolbar("气象数据实时概况", "",{ + + }) + + launcherResultQRCode = createQRCodeActivityResultLauncher() + + binding.lv.emptyView = binding.tvNodata + headView = View.inflate(this, R.layout.item_work_risk_list, null) + + mAdapter = WorkRiskLevelListAdapter(this,datas, + { position -> + val item = datas[position] + if(item.hazardList!=null&&item.hazardList.size>0){ + //进入风险提示页面 + val intent = Intent(context, WorkRiskListTipActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + intent.putExtra("hazardList", GsonUtils.GsonString(item.hazardList)) + startActivity(intent) + } + }, + { position -> + val item = datas[position] + if(item.hazardList!=null&&item.hazardList.size>0){ + //进入修改风险等级 + val intent = Intent(context, CustomDialogChangeLevelActivity::class.java) + intent.putExtra("id",item.id) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + intent.putExtra("level", item.level) + intent.putExtra("type", item.type) + launcherResultQRCode.launch(intent) + } + }, + { position -> + val item = datas[position] + showLog("---------") + showLog(GsonUtils.GsonString(item)) + //工作情况汇报 + val intent = Intent(context, WorkRiskListHuiBaoActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + intent.putExtra("level",item.level) + intent.putExtra("type",item.type) + intent.putExtra("id",item.id) + startActivity(intent) + } + ) + //binding.lv.addHeaderView(headView, null, false) + binding.lv.adapter = mAdapter + + binding.llRefresh.setOnClickListener { authenticationLoginAI() } + + binding.llWorkTicket.setOnClickListener { + if(isNetworkNormal){ + //进入风险提示页面 WorkTickerSelectListActivity + val intent = Intent(context, WorkTickerSelectListActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + intent.putExtra("selectList", GsonUtils.GsonString(selectList)) + intent.putExtra("jobNoList", GsonUtils.GsonString(jobNoList)) + startActivity(intent) + }else{ + //WorkTickerAssistantSelectListActivity + showToast("列表数据加载失败,请检查网络环境或重新加载列表数据") + } + } + + binding.llAssiting.setOnClickListener { + if(isNetworkNormal){ + //进入风险提示页面 WorkTickerAssistantSelectListActivity + val intent = Intent(context, WorkTickerAssistantSelectListActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + intent.putExtra("selectList", GsonUtils.GsonString(selectListAssistant)) + intent.putExtra("jobNoList", GsonUtils.GsonString(jobNoListAssistant)) + startActivity(intent) + }else{ + showToast("列表数据加载失败,请检查网络环境或重新加载列表数据") + } + } + + binding.llCustomAdd.setOnClickListener { + if(isNetworkNormal){ + //进入风险提示页面 WorkTickerAssistantSelectListActivity + val intent = Intent(context, WorkTickerCustomListActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + intent.putExtra("selectList", GsonUtils.GsonString(selectListCustom)) + intent.putExtra("jobNoList", GsonUtils.GsonString(jobNoListCustom)) + startActivity(intent) + }else{ + showToast("列表数据加载失败,请检查网络环境或重新加载列表数据") + } + } + + //格式化日期的对象(转化成习惯的时间格式) + val sdFormat = SimpleDateFormat("yyyy.MM.dd") + //静态方法getInstance()使用默认时区和语言环境获得一个日历。 + val calendar = Calendar.getInstance() + //输出当前系统时间; + binding.tvTime.text = sdFormat.format(calendar.time) + bindViewClick() + } + + override fun initData() { + authenticationLoginAI() + } + + override fun onRestart() { + super.onRestart() + authenticationLoginAI() + } + + //创建一个ActivityResultLauncher + private fun createQRCodeActivityResultLauncher(): ActivityResultLauncher { + //kotlin写法 + return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + val data = it.data + val resultCode = it.resultCode + if (resultCode == RESULT_OK) { + if (data != null) { + val qrCodeStr = data.getStringExtra("code") ?: "" + showLog(qrCodeStr) + if(!TextUtils.isEmpty(qrCodeStr)){ + //刷新列表数据 + authenticationLoginAI() + } + } + } + } + } + + private fun authenticationLoginAI() { + try { + //AI三维登录接口 + val userName = Contans.SP.AI_ACCOUNT + //String strPrivateEncode=RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.AI_PWD,RSAAndroid.privateRsaKeyLocal); + val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr( + Contans.SP.AI_PWD_ENCODE, + RSAAndroid.publicRsaKeyLocal + ) + AuthenticationLoginAIUtils.authenticationAILoginShowProgress( + this, userName, strPublicDecode + ) { _, token -> + if (token != null && token == "") { + showToast("AI三维平台登录失败") + isNetworkNormal = false + } else { + getWorkRiskListData() + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + + private fun getWorkRiskListData() { + val request = NoHttp.createStringRequest( + Contans.BASE_URL_AI_3D_SERVER + Contans.DAYLY_RISK_LIST_NEW, + RequestMethod.GET + ) + + request.add("filter",true); + + if (Contans.BASE_URL_AI_3D_SERVER == Contans.BASE_URL_AI_3D_SERVER_EXTRANET) { + val socketFactory = NohttpUtils.getSSLSocketFactory(context) + if (socketFactory != null) { + request.sslSocketFactory = socketFactory + request.hostnameVerifier = HostnameVerifier { _, _ -> true } + } + } + + NohttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + showLog("----------------") + showLog(result) + val bean = GsonUtils.GsonToBean( + result, + WorkRiskLevelListBean::class.java + ) + if (bean != null && bean.data != null) { + isNetworkNormal = true + val workRiskLevelLists = bean.data + if (workRiskLevelLists != null && workRiskLevelLists.size > 0) { + binding.tvNodata.visibility = View.GONE + headView.visibility = View.VISIBLE + datas.clear() + datas.addAll(workRiskLevelLists) + mAdapter.notifyDataSetChanged() + + dataA.clear() + dataB.clear() + dataC1.clear() + dataC2.clear() + dataC3.clear() + dataLowRisk.clear() + + + selectList.clear() + jobNoList.clear() + + selectListAssistant.clear() + jobNoListAssistant.clear() + + selectListCustom.clear() + jobNoListCustom.clear() + + for(item in datas){ + if("ticket" == item.type){ + selectList.add(item.id) + jobNoList.add(item.jobNo) + } + if("assisting" == item.type){ + selectListAssistant.add(item.id) + jobNoListAssistant.add(item.jobNo) + } + if("custom" == item.type){ + selectListCustom.add(item.id) + jobNoListCustom.add(item.jobNo) + } + + + showLog(GsonUtils.GsonString(item)) + if(item.level!=null&&item.level=="A"){ + dataA.add(item) + } + if(item.level!=null&&item.level=="B"){ + dataB.add(item) + } + if(item.level!=null&&item.level=="C1"){ + dataC1.add(item) + } + if(item.level!=null&&item.level=="C2"){ + dataC2.add(item) + } + if(item.level!=null&&item.level=="C3"){ + dataC3.add(item) + } + if(item.level!=null&&item.level=="低风险"){ + dataLowRisk.add(item) + } + } + binding.tvA.text = dataA.size.toString() + binding.tvB.text = dataB.size.toString() + binding.tvC1.text = dataC1.size.toString() + binding.tvC2.text = dataC2.size.toString() + binding.tvC3.text = dataC3.size.toString() + binding.tvLowLisk.text = dataLowRisk.size.toString() + + } else { + binding.tvNodata.visibility = View.VISIBLE + } + }else{ + isNetworkNormal = false + } + } + + override fun onFailed(what: Int, response: Response?) { + isNetworkNormal = false + } + }) + } + + private fun bindViewClick() { + binding.tvA.setOnClickListener { + datas.clear() + datas.addAll(dataA) + mAdapter.notifyDataSetChanged() + } + binding.tvB.setOnClickListener { + datas.clear() + datas.addAll(dataB) + mAdapter.notifyDataSetChanged() + } + binding.tvC1.setOnClickListener { + datas.clear() + datas.addAll(dataC1) + mAdapter.notifyDataSetChanged() + } + binding.tvC2.setOnClickListener { + datas.clear() + datas.addAll(dataC2) + mAdapter.notifyDataSetChanged() + } + binding.tvC3.setOnClickListener { + datas.clear() + datas.addAll(dataC3) + mAdapter.notifyDataSetChanged() + } + binding.tvLowLisk.setOnClickListener { + datas.clear() + datas.addAll(dataLowRisk) + mAdapter.notifyDataSetChanged() + } + binding.tvReport.setOnClickListener { + val intent = Intent(context, WorkRiskListReportActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + } + } + + private fun toWorkRiskListHuiBaoActivity(type:String){ + //工作情况汇报 + val intent = Intent(context, WorkRiskListHuiBaoActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + intent.putExtra("type",type) + startActivity(intent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/HomeFragment.kt b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/HomeFragment.kt index 5a2a661..736f510 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/HomeFragment.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/HomeFragment.kt @@ -92,6 +92,7 @@ import retrofit2.Response import java.text.SimpleDateFormat import java.util.Calendar import androidx.core.view.isVisible +import com.rehome.zhdcoa.ui.activity.WeatherActivity /** @@ -196,34 +197,36 @@ class HomeFragment : BaseViewBindingFragment() { private fun initLists() { val titles = arrayOf( - "来访管理", +// "来访管理", "会议管理", "用餐管理", "车辆管理", - "办公领用", - "工作任务", - "日程查看", +// "办公领用", +// "工作任务", +// "日程查看", "考勤", "培训", "党建", "工会培训问卷", "生产过程监督", "安防" + //"气象数据" ) val imgIds = intArrayOf( - R.drawable.icon_visit, +// R.drawable.icon_visit, R.drawable.icon_meet, R.drawable.icon_dinner, R.drawable.icon_vehicle, - R.drawable.icon_office, - R.drawable.icon_task, - R.drawable.icon_date, +// R.drawable.icon_office, +// R.drawable.icon_task, +// R.drawable.icon_date, R.drawable.icon_check, R.drawable.icon_px, R.drawable.icon_dj, R.drawable.gh_icon, R.drawable.icon_gcjd, R.drawable.icon1 + //R.drawable.real_weather ) for (i in titles.indices) { val item = GridItem(titles[i], imgIds[i]) @@ -255,26 +258,43 @@ class HomeFragment : BaseViewBindingFragment() { binding.gv.setAdapter(adapter) binding.gv.onItemClickListener = AdapterView.OnItemClickListener { parent: AdapterView<*>?, view: View?, position: Int, id: Long -> - if (position == 3) { + if (position == 2) { if (resultList.contains("ApplyVehicle")) { val intent = Intent(getContext(), ApplyVehicleActivity::class.java) startActivity(intent) } - } else { + }else if (position == 9) { + val intent = Intent(getContext(), WeatherActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intent) + }else { var TAG = "" +// when (position) { +// 0 -> TAG = GridViewDialog.TAG_VISIT +// 1 -> TAG = GridViewDialog.TAG_MEET +// 2 -> TAG = GridViewDialog.TAG_DINNER +// 4 -> TAG = GridViewDialog.TAG_OFFICE +// 5 -> TAG = GridViewDialog.TAG_TASK +// 6 -> TAG = GridViewDialog.TAG_SCHEDULE +// 7 -> TAG = GridViewDialog.TAG_CHECK +// 8 -> TAG = GridViewDialog.TAG_PEIXUN +// 9 -> TAG = GridViewDialog.TAG_PDANGJIAN +// 10 -> TAG = GridViewDialog.TAG_GONGHUI +// 11 -> TAG = GridViewDialog.TAG_JD +// 12 -> TAG = GridViewDialog.TAG_AF +// } when (position) { - 0 -> TAG = GridViewDialog.TAG_VISIT - 1 -> TAG = GridViewDialog.TAG_MEET - 2 -> TAG = GridViewDialog.TAG_DINNER - 4 -> TAG = GridViewDialog.TAG_OFFICE - 5 -> TAG = GridViewDialog.TAG_TASK - 6 -> TAG = GridViewDialog.TAG_SCHEDULE - 7 -> TAG = GridViewDialog.TAG_CHECK - 8 -> TAG = GridViewDialog.TAG_PEIXUN - 9 -> TAG = GridViewDialog.TAG_PDANGJIAN - 10 -> TAG = GridViewDialog.TAG_GONGHUI - 11 -> TAG = GridViewDialog.TAG_JD - 12 -> TAG = GridViewDialog.TAG_AF + 0 -> TAG = GridViewDialog.TAG_MEET + 1 -> TAG = GridViewDialog.TAG_DINNER +// 3 -> TAG = GridViewDialog.TAG_OFFICE +// 4 -> TAG = GridViewDialog.TAG_TASK +// 5 -> TAG = GridViewDialog.TAG_SCHEDULE + 3 -> TAG = GridViewDialog.TAG_CHECK + 4 -> TAG = GridViewDialog.TAG_PEIXUN + 5 -> TAG = GridViewDialog.TAG_PDANGJIAN + 6 -> TAG = GridViewDialog.TAG_GONGHUI + 7 -> TAG = GridViewDialog.TAG_JD + 8 -> TAG = GridViewDialog.TAG_AF } val dialog = GridViewDialog(context, TAG) dialog.show() diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/MineFragment.java b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/MineFragment.java index 29f4f48..0cbf92e 100755 --- a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/MineFragment.java +++ b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/MineFragment.java @@ -357,42 +357,42 @@ public class MineFragment extends BaseLazyFragment { } }); //APP建议 - tvSuggest.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - List list2 = new ArrayList<>(); - list2.add("我的建议"); - list2.add("建议汇总"); - - ListDialog dialog2 = new ListDialog(requireContext(), list2, (time, position) -> { - - switch (position) { - case 0: - Intent intent62 = new Intent(getActivity(), MyAdviceActivity.class); - intent62.putExtra("result_advice", "1"); - startActivity(intent62); - break; - case 1: - Intent intent21 = new Intent(getActivity(), MyAdviceActivity.class); - intent21.putExtra("result_advice", "2"); - startActivity(intent21); - break; - - } - }); - - dialog2.setTvTitle("请选择"); - dialog2.show(); - } - }); +// tvSuggest.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// List list2 = new ArrayList<>(); +// list2.add("我的建议"); +// list2.add("建议汇总"); +// +// ListDialog dialog2 = new ListDialog(requireContext(), list2, (time, position) -> { +// +// switch (position) { +// case 0: +// Intent intent62 = new Intent(getActivity(), MyAdviceActivity.class); +// intent62.putExtra("result_advice", "1"); +// startActivity(intent62); +// break; +// case 1: +// Intent intent21 = new Intent(getActivity(), MyAdviceActivity.class); +// intent21.putExtra("result_advice", "2"); +// startActivity(intent21); +// break; +// +// } +// }); +// +// dialog2.setTvTitle("请选择"); +// dialog2.show(); +// } +// }); //我的待办(其他系统) - tvAllaudit.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent6 = new Intent(getActivity(), OtherCountMeActivity.class); - startActivity(intent6); - } - }); +// tvAllaudit.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// Intent intent6 = new Intent(getActivity(), OtherCountMeActivity.class); +// startActivity(intent6); +// } +// }); //检查更新 tvSm.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/res/drawable-xhdpi/real_weather.png b/app/src/main/res/drawable-xhdpi/real_weather.png new file mode 100644 index 0000000000000000000000000000000000000000..56e52b2d25c09a3318532c3892bff725e7db12e9 GIT binary patch literal 21277 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 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 270c678..e83f777 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -63,20 +63,20 @@ android:textColor="@color/textColor" android:textSize="25px" /> - + + + + + + + + + + + + + + + android:orientation="horizontal">